제퍼넷 로고

AWS Textract Teardown – 2021 년 Amazon Textract 사용의 장단점

시간


2021 년 텍스트 인식

많은 회사와 조직에서 많은 귀중한 비즈니스 데이터가 문서에 저장됩니다. 이 데이터는 디지털 혁신의 핵심입니다. 안타깝게도 통계에 따르면이 모든 데이터의 80 %는 비즈니스 송장, 이메일, 영수증, PDF 문서 등과 같은 구조화되지 않은 형식에 포함되어 있습니다. 따라서 이러한 문서에서 정보를 추출하고 최대한 활용하기 위해 기업은 천천히 인공 지능 (AI) 기반 서비스에 의존하기 시작했습니다. AI 기반 서비스를 제공하는 업체 중 Amazon은 오랫동안 가장 유명한 업체 중 하나였습니다. 문서 처리, 음성 인식, 텍스트 분석 등과 같은 다양한 솔루션에 날개를 펼쳤습니다.

이 블로그에서는 스캔 한 문서에서 인쇄 된 텍스트, 손글씨, 표 및 기타 데이터를 자동으로 추출하는 완전 관리 형 기계 학습 서비스 인 Amazon의 AWS Textract를 살펴 보겠습니다. 시작하자!

간단히 말해서 AWS Textract는 다양한 유형의 문서를 편집 가능한 형식으로 변환하는 딥 러닝 기반 서비스입니다. 우리가 다른 회사의 청구서의 인쇄본을 가지고 있고 그로부터의 모든 중요한 정보를 엑셀 / 스프레드 시트에 저장한다고 생각해보십시오. 일반적으로 데이터 입력 연산자를 사용하여 수동으로 입력하므로 바쁘고 시간이 많이 걸리며 오류가 발생하기 쉽습니다. 하지만 Textract를 사용하면 인보이스를 여기에 업로드하면 문서의 모든 텍스트, 양식, 키-값 쌍 및 테이블이보다 구조화 된 방식으로 반환됩니다. 다음은 AWS가 지능형 정보 추출을 수행하는 방법에 대한 스크린 샷입니다.

AWS Textract에서 정보 추출

입력 된 텍스트뿐만 아니라 AWS Textract는 문서에서 손으로 쓴 텍스트도 식별합니다. 이렇게하면 손으로 쓴 텍스트를 추출하는 것이 입력 한 텍스트보다 추출하기가 더 복잡하기 때문에 정보 추출이 더 유용합니다. 이제 Textract 사용에 대한 몇 가지 일반적인 사용 사례를 살펴 보겠습니다.

강력하고 정규화 된 데이터 캡처 : Amazon Textract를 사용하면 재무 문서, 연구 보고서 및 의료 기록과 같은 다양한 문서에서 텍스트 및 표 형식 데이터를 추출 할 수 있습니다. 그러나 이들은 맞춤형 API는 아니지만 매일 방대한 양의 데이터에서 학습하며, 이러한 지속적인 학습을 통해 문서에서 구조화되지 않은 구조화 된 데이터를 추출하는 것이 훨씬 쉬워집니다.

키-값 쌍 추출 : 키-값 쌍 추출은 문서 처리에서 일반적인 문제가되었지만 Amazon Textract를 사용하면이 문제를 쉽게 해결할 수 있습니다. 문서 스캔에서 데이터를 엑셀 시트로 푸시하는 것까지 바로 문서 처리를 자동화하는 Textract를 사용하여 키-값 쌍 추출을위한 파이프 라인을 구축 할 수 있습니다.

지능형 검색 색인 만들기 : Amazon Textract를 사용하면 이미지 및 PDF 파일에서 감지 된 텍스트 라이브러리를 생성 할 수 있습니다.

자연어 처리 (NLP)에 지능형 텍스트 추출 사용 – Amazon Textract를 사용하면 텍스트를 단어와 줄로 추출 할 수 있습니다. 또한 Amazon Textract 문서 테이블 분석이 활성화 된 경우 테이블 셀별로 텍스트를 그룹화합니다. Amazon Textract는 텍스트가 NLP에 대한 입력으로 그룹화되는 방식을 제어 할 수 있습니다.


지능형 텍스트 인식 솔루션을 찾고 계십니까? 에 머리 나노 넷 95 % 이상의 정확도로 솔루션을 사용합니다.


이 섹션에서는 AWS Textract의 작동 방식에 대해 설명합니다. 강력한 AI 및 ML 알고리즘이 그 뒤에 있다는 것을 알고 있습니다. 그러나 세부 사항을 살펴볼 오픈 소스 모델은 없습니다. 하지만 여기에서 찾을 수있는 문서를 요약하여 작동 방식을 해독하려고합니다. 시작하자!

Amazon (AWS) Textract는 어떻게 작동합니까?
Amazon (AWS) Textract는 어떻게 작동합니까? (출처 : Dev.to)

첫째, 새 문서 또는 스캔 한 문서가 Textract로 전송 될 때마다 감지 된 모든 텍스트에 대한 블록 개체 목록을 만듭니다. 예를 들어, 송장이 오늘날 XNUMX 개의 단어로 구성되어 있다고 가정하면 AWS는 모든 단어에 대해 XNUMX 개의 블록 객체를 만듭니다. 이러한 블록에는 감지 된 항목, 위치 및 Amazon Textract가 처리의 정확성에 대한 신뢰도에 대한 정보가 포함됩니다.

일반적으로 대부분의 문서는 다음 블록으로 구성됩니다.

  • 페이지
  • 텍스트의 줄과 단어
  • 양식 데이터 (키-값 쌍)
  • 테이블과 셀
  • 선택 요소

다음은 AWS Textract의 블록 데이터 구조와 예입니다.

{ "Blocks":[ { "Geometry": { "BoundingBox": { "Width": 1.0, "Top": 0.0, "Left": 0.0, "Height": 1.0 }, "Polygon": [ { "Y": 0.0, "X": 0.0 }, { "Y": 0.0, "X": 1.0 }, { "Y": 1.0, "X": 1.0 }, { "Y": 1.0, "X": 0.0 } ] }, "Relationships": [ { "Type": "CHILD", "Ids": [ "2602b0a6-20e3-4e6e-9e46-3be57fd0844b", "82aedd57-187f-43dd-9eb1-4f312ca30042", "52be1777-53f7-42f6-a7cf-6d09bdc15a30", "7ca7caa6-00ef-4cda-b1aa-5571dfed1a7c" ] } ], "BlockType": "PAGE", "Id": "8136b2dc-37c1-4300-a9da-6ed8b276ea97" }..... ], "DocumentMetadata": { "Pages": 1 }
}

그러나 블록 내부의 내용은 호출하는 작업에 따라 변경됩니다. 텍스트 감지 작업의 경우 블록은 감지 된 텍스트의 페이지, 행 및 단어를 반환합니다. 문서 분석 작업을 사용하는 경우 블록은 감지 된 페이지, 키-값 쌍, 테이블, 선택 요소 및 텍스트를 반환합니다. 그러나 이것은 Textract의 상위 수준 작업에 대해서만 설명합니다. 다음 섹션에서는 Textract 뒤에있는 OCR에 대해 자세히 알아 보겠습니다.

상업용 제품이므로 Amazon Textract가 사용하는 OCR 유형에 대한 구체적인 내용은 없습니다. 그러나 가장 인기있는 오픈 소스 OCR 중 하나 인 "Tesseract"와 비교하여 정확성과 다양한 유형의 문서를 추출하는 기능을 이해할 수 있습니다.

AWS Textract OCR
AWS Textract OCR (출처 : AWS 웹 사이트)

Tesseract OCR은 텍스트 데이터에서 탁월한 성능을 발휘하는 딥 러닝 기반 신경망 아키텍처 인 LSTM을 기반으로합니다. 다음은 tesseract가 지원하는 문서 형식입니다 : 일반 텍스트, hOCR (HTML), PDF, 보이지 않는 텍스트 전용 PDF, TSV. 유니 코드 (UTF-8)를 지원하며 100 개 이상의 언어를 즉시 지원합니다. 그러나 모든 코드가 오픈 소스이므로 다른 언어를 인식하도록 훈련시킬 수 있지만이를 위해서는 딥 러닝 및 컴퓨터 비전 전문 지식이 필요합니다. 테이블 및 키-값 쌍 추출과 관련하여 tesseract가 실패합니다. 그래도이 문제를 해결하기 위해 사용자 지정 파이프 라인을 구축 할 수 있습니다.

Textract OCR은 딥 러닝 기반 신경망 아키텍처이기도하지만 완전히 사용자 지정이 가능하거나 사용자 지정 데이터 세트에서 훈련 될 수는 없습니다. 그 역할은 문서 안에있는 모든 데이터를 구문 분석하고 추출하는 것입니다. 그러나 Textract는 자동으로 데이터를 조정하고 사람이 추출 된 정보 (루프 속 사람)를 확인하면 이동 중에 더 높은 정확도를 달성합니다. 테이블 추출 및 키-값 쌍 추출과 같은 작업의 경우 Textract는 Tesseract보다 높은 정확도를 달성하는 공정한 작업을 수행합니다. 그러나 몇 가지 언어와 문서 형식으로 만 제한됩니다.

다음은 AWS Textract를 사용하여 처리 할 수있는 몇 가지 문서 유형입니다.

  • 일반 송장 / 청구서
  • 금융 문서
  • 의료 문서
  • 손으로 쓴 문서
  • 급여 명세서 또는 직원 문서

다음 섹션에서는 Textract Python API를 살펴 보겠습니다.


지능을 찾고 문서에서 정보를 추출하는 OCR 솔루션? 에 머리 나노 넷 모든 언어의 모든 형식으로 문서에서 텍스트를 추출합니다.


Amazon Textract API는 다양한 프로그래밍 언어로 활용할 수 있습니다. 이 섹션에서는 Python과 함께 Textract를 사용하여 키-값 추출의 코드 블록을 살펴볼 것입니다. 언어 및 API 지원에 대한 자세한 내용은 여기에서 문서를 확인하세요.

이 코드 조각은 Textract의 Python API를 사용하여 문서에서 키-값 쌍 추출을 수행 할 수있는 방법의 예입니다. 이 작업을 수행하려면 AWS 대시 보드에서 API 키도 구성해야합니다. 이제 코드 스 니펫을 살펴 보겠습니다.

먼저 문서를 AWS로 푸시하고 추출 된 텍스트를 처리하는 데 필요한 모든 패키지를 가져옵니다.

import boto3
import sys
import re
import json

다음으로, 우리는 get_kv_map, 여기서 우리는 boto3 Amazon Textract API와 통신하고 문서를 업로드하고 블록 응답을 가져옵니다. 이제 'BlockType'을 확인하여 모든 키-값 쌍을 가져와 사전에 반환합니다.

def get_kv_map(file_name): with open(file_name, 'rb') as file: img_test = file.read() bytes_test = bytearray(img_test) print('Image loaded', file_name) # process using image bytes client = boto3.client('textract') response = client.analyze_document(Document={'Bytes': bytes_test}, FeatureTypes=['FORMS']) # Get the text blocks blocks=response['Blocks'] # get key and value maps key_map = {} value_map = {} block_map = {} for block in blocks: block_id = block['Id'] block_map[block_id] = block if block['BlockType'] == "KEY_VALUE_SET": if 'KEY' in block['EntityTypes']: key_map[block_id] = block else: value_map[block_id] = block return key_map, value_map, block_map

그 후 블록 항목을 사용하여 추출 된 키-값 쌍 간의 관계를 가져 오는 함수가 있습니다. 기본적으로 블록 정보 (JSON)에있는 관계를 사용하여이 함수는 문서의 키와 값을 연결합니다.

def get_kv_relationship(key_map, value_map, block_map): kvs = {} for block_id, key_block in key_map.items(): value_block = find_value_block(key_block, value_map) key = get_text(key_block, block_map) val = get_text(value_block, block_map) kvs[key] = val return kvs def find_value_block(key_block, value_map): for relationship in key_block['Relationships']: if relationship['Type'] == 'VALUE': for value_id in relationship['Ids']: value_block = value_map[value_id] return value_block

마지막으로 저장된 키-값 쌍에있는 텍스트를 반환합니다.

def get_text(result, blocks_map): text = '' if 'Relationships' in result: for relationship in result['Relationships']: if relationship['Type'] == 'CHILD': for child_id in relationship['Ids']: word = blocks_map[child_id] if word['BlockType'] == 'WORD': text += word['Text'] + ' ' if word['BlockType'] == 'SELECTION_ELEMENT': if word['SelectionStatus'] == 'SELECTED': text += 'X' return text def print_kvs(kvs): for key, value in kvs.items(): print(key, ":", value) def search_value(kvs, search_key): for key, value in kvs.items(): if re.search(search_key, key, re.IGNORECASE): return value def main(file_name): key_map, value_map, block_map = get_kv_map(file_name) # Get Key Value relationship kvs = get_kv_relationship(key_map, value_map, block_map) print("nn== FOUND KEY : VALUE pairs ===n") print_kvs(kvs) # Start searching a key value while input('n Do you want to search a value for a key? (enter "n" for exit) ') != 'n': search_key = input('n Enter a search key:') print('The value is:', search_value(kvs, search_key)) if __name__ == "__main__": file_name = sys.argv[1] main(file_name)

이러한 방식으로 AWS Textract API를 사용하여 다양한 정보 추출 작업을 수행 할 수 있습니다. 기능 / 접근법은 대부분의 프로그래밍 언어와 유사합니다. API를 활용하려는 경우 사용 사례에 따라 접근 방식을 사용자 지정할 수도 있습니다.


문서에서 데이터 입력을 자동화하고 싶으십니까? Nanonets의 AI 기반 OCR 솔루션은 구조화 / 비 구조화 문서에서 핵심 정보를 추출하고 프로세스를 자동 조종 장치에 넣는 데 도움이됩니다!


AWS Textract 사용의 장단점

장점 :

AWS 서비스를 통한 손쉬운 설정 : 다른 AWS 서비스로 Textract를 설정하는 것은 다른 공급자에 비해 쉬운 작업입니다. 예를 들어 Amazon DynamoDB 또는 S3에 추출 된 문서 정보를 저장하려면 애드온을 구성 할 수 있습니다.

안전한: Amazon Textract는 데이터 보호에 대한 규정 및 지침이 포함 된 AWS 공동 책임 모델을 준수합니다. AWS는 모든 AWS 서비스를 실행하는 글로벌 인프라를 보호 할 책임이 있습니다. 따라서 우리는 데이터가 유출되거나 다른 사람이 사용하는 것에 대해 걱정할 필요가 없습니다.

단점 :

사용자 정의 필드를 추출 할 수 없음 : 주어진 인보이스에는 인보이스 ID, 기한, 거래 날짜 등과 같은 여러 데이터 필드가있을 수 있습니다. 이러한 필드는 대부분의 인보이스에서 일반적으로 사용되는 항목입니다. 그러나 송장에서 사용자 정의 필드 (예 : GST 번호 또는 은행 정보)를 추출하려는 경우 Textract는 제대로 작동하지 않습니다.

업스트림 및 다운 스트림 공급자와의 통합 : 예를 들어, Textract를 사용하면 다른 제공 업체와 쉽게 통합 할 수 없습니다. 예를 들어 타사 서비스로 RPA 파이프 라인을 구축해야합니다. Textract에 적합한 적절한 플러그인을 찾는 것은 어려울 것입니다.

테이블 헤더를 정의하는 기능 : 테이블 추출 작업의 경우 textract에서는 테이블 헤더를 정의 할 수 없습니다. 따라서 주어진 문서에서 특정 열이나 표를 검색하거나 찾는 것은 쉽지 않습니다.

사기 수표 금지 : 최신 OCR은 이제 날짜를 확인하고 픽셀 화 된 영역을 찾아 특정 문서가 원본인지 가짜인지 확인할 수 있습니다. AWS Textract에는이 기능이 포함되어 있지 않으며 업로드 된 문서에서 모든 텍스트를 선택하는 것이 유일한 작업입니다.

수직 텍스트 추출 없음 : 일부 문서에서는 인보이스 번호 또는 주소가 세로로 정렬되어 있습니다. 현재 AWS는 약간의 평면 내 회전으로 수평 텍스트 추출 만 지원합니다.

언어 제한 : Amazon Textract는 영어, 스페인어, 독일어, 프랑스어, 이탈리아어 및 포르투갈어 텍스트 감지를 지원합니다. Amazon Textract는 출력에서 ​​감지 된 언어를 반환하지 않습니다.

모든 것이 클라우드 : Textract로 처리 된 모든 문서는 클라우드로 이동하여 일부 지역 만 지원합니다. 추가 정보 여기에서 지금 확인해 보세요.. 그러나 일부 회사는 기밀성 또는 법적 요구 사항과 같은 이유로 문서를 클라우드로 가져가는 데 관심이 없을 수 있습니다. 하지만 안타깝게도 AWS Textract는 문서 처리를위한 온 프레미스 배포를 지원하지 않습니다.

재교육 : 문서 세트에 대한 정보 추출 작업의 정확성이 낮다면 Textract는이를 재교육하는 것을 허용하지 않습니다. 이 문제를 해결하려면 작업자가 잘못 추출 된 값을 수동으로 확인하고 주석을 추가해야하는 인적 검토 워크 플로에 다시 투자해야하므로 시간이 많이 걸립니다.

결론

문서에서 데이터 추출 / 텍스트 인식을위한 다양한 솔루션을 고려할 때 AWS Textract에 대한이 리뷰가 도움이 되었기를 바랍니다. 최신 변경 사항을 다루기 위해이 게시물을 정기적으로 업데이트 할 예정입니다.

댓글 섹션에 Amazon의 Textract 솔루션 사용에 대한 생각과 질문을 추가하십시오.

출처 : AWS 웹 사이트의 히어로 이미지.

자동화를 위해 Nanonets 사용 시작

오늘 모델을 시험해 보거나 데모를 요청하십시오!

지금 시작하세요!

코인 스마트. 유로파 최고의 비트 코인-보르 스
출처 : https://nanonets.com/blog/aws-textract-teardown-pros-cons-review/

spot_img

최신 인텔리전스

spot_img