Amazon Textract PlatoBlockchain Data Intelligence의 새로운 쿼리 기능을 사용하여 문서에서 정보를 지정하고 추출합니다. 수직 검색. 일체 포함.

Amazon Textract의 새로운 쿼리 기능을 사용하여 문서에서 정보 지정 및 추출

아마존 텍사스 문서나 이미지에서 텍스트, 필기, 데이터를 자동으로 추출하는 머신러닝(ML) 서비스입니다. Amazon Textract는 이제 Analyze Document API 내의 새로운 쿼리 기능을 사용하여 문서에서 추출해야 하는 데이터를 지정할 수 있는 유연성을 제공합니다. 문서의 데이터 구조(테이블, 양식, 암시된 필드, 중첩 데이터)를 알 필요가 없으며 문서 버전 및 형식에 따른 변화에 대해 걱정할 필요가 없습니다.

이 게시물에서는 다음 주제에 대해 논의합니다.

  • AWS 고객의 성공 사례와 새로운 쿼리 기능의 이점
  • 문서 쿼리 분석 API가 문서에서 정보를 추출하는 데 어떻게 도움이 됩니까?
  • Amazon Textract 콘솔 둘러보기
  • 문서 쿼리 분석 API를 활용하는 코드 예제
  • Amazon Textract 파서 라이브러리로 응답을 처리하는 방법

새로운 쿼리 기능의 이점

기존 OCR 솔루션은 대부분의 반정형 및 비정형 문서에서 데이터가 여러 버전 및 형식에 걸쳐 배치되는 방식이 크게 다르기 때문에 이러한 문서에서 데이터를 정확하게 추출하는 데 어려움을 겪고 있습니다. 사용자 정의 후처리 코드를 구현하거나 이러한 문서에서 추출된 정보를 수동으로 검토해야 합니다. 쿼리 기능을 사용하면 필요한 정보를 자연어 질문(예: "고객 이름이 무엇입니까?") 형식으로 지정하고 API 응답의 일부로 정확한 정보("John Doe")를 받을 수 있습니다. 이 기능은 시각적, 공간적, 언어 모델의 조합을 사용하여 원하는 정보를 높은 정확도로 추출합니다. 쿼리 기능은 다양한 반구조적 문서와 구조화되지 않은 문서에 대해 사전 학습되었습니다. 몇 가지 예로는 급여 명세서, 은행 명세서, W-2, 대출 신청서, 모기지 메모, 백신 및 보험 카드 등이 있습니다.

"Amazon Textract를 사용하면 고객의 문서 처리 요구 사항을 자동화할 수 있습니다. 쿼리 기능을 사용하면 더욱 유연하고 정확하게 다양한 문서에서 데이터를 추출할 수 있습니다." TekStream Solutions의 CEO인 Robert Jansen은 이렇게 말했습니다.. '우리는 이것이 IDP 솔루션의 일부로 쿼리 기능을 사용하여 문서에서 주요 정보를 신속하게 얻을 수 있는 비즈니스 고객에게 큰 생산성 향상이라고 생각합니다."

"Amazon Textract를 사용하면 이미지에서 양식 및 표와 같은 구조화된 요소는 물론 텍스트도 매우 정확하게 추출할 수 있습니다. Amazon Textract Queries는 안전보건자료, 재료 사양 등 비즈니스에 중요한 여러 문서에서 정보 추출 품질을 획기적으로 향상시키는 데 도움이 되었습니다." Thorsten Warnecke 교장 | PC 분석 책임자, Camelot Management Consultants. '자연어 쿼리 시스템은 뛰어난 유연성과 정확성을 제공하여 사후 처리 부하를 줄이고 데이터 추출 도구에 새 문서를 더 빠르게 추가할 수 있게 했습니다."

문서 쿼리 분석 API가 문서에서 정보를 추출하는 데 어떻게 도움이 됩니까?

특히 코로나19 팬데믹으로 인해 기업들은 디지털 플랫폼 채택을 늘렸습니다. 이제 대부분의 조직에서는 스마트폰 및 기타 모바일 장치를 활용하여 서비스와 제품을 획득할 수 있는 디지털 방식을 제공합니다. 이는 사용자에게 유연성을 제공할 뿐만 아니라 디지털 문서를 검토, 처리 및 분석해야 하는 규모를 증가시킵니다. 예를 들어 모기지 문서, 예방 접종 카드, 급여 명세서, 보험 카드 및 기타 문서를 디지털 방식으로 분석해야 하는 일부 워크로드에서는 이러한 문서에 표준 형식이 없거나 데이터 형식이 상당히 다양하기 때문에 데이터 추출의 복잡성이 기하급수적으로 가중될 수 있습니다. 문서의 다양한 버전에 걸쳐

강력한 OCR 솔루션조차도 이러한 문서에서 데이터를 정확하게 추출하는 데 어려움을 겪으며 이러한 문서에 대한 사용자 정의 후처리를 구현해야 할 수도 있습니다. 여기에는 양식 키의 가능한 변형을 고객 기본 필드 이름에 매핑하거나 구조화되지 않은 문서에서 특정 정보를 식별하기 위한 사용자 지정 기계 학습을 포함하는 것이 포함됩니다.

Amazon Textract의 새로운 Analyze Document Queries API는 "이자율은 얼마입니까?"와 같은 자연어로 작성된 질문을 받을 수 있습니다. 문서에 대한 강력한 AI 및 ML 분석을 수행하여 원하는 정보를 파악하고 후처리 없이 문서에서 추출합니다. 쿼리 기능에는 사용자 지정 모델 교육이나 템플릿 또는 구성 설정이 필요하지 않습니다. Amazon Textract 콘솔을 통해 문서를 업로드하고 해당 문서에 대한 질문을 지정하여 빠르게 시작할 수 있습니다. AWS 명령 줄 인터페이스 (AWS CLI) 또는 AWS SDK.

이 게시물의 후속 섹션에서는 일반적인 워크로드 사용 사례에서 이 새로운 기능을 사용하는 방법과 문서 쿼리 분석 API를 사용하여 워크로드 디지털화 프로세스에 민첩성을 추가하는 방법에 대한 자세한 예를 살펴보겠습니다.

Amazon Textract 콘솔에서 쿼리 기능 사용

API 및 코드 샘플을 시작하기 전에 Amazon Textract 콘솔을 검토해 보겠습니다. 다음 이미지는 예방접종 카드의 예를 보여줍니다. 검색어 Amazon Textract 콘솔의 문서 분석 API 탭입니다. Amazon Textract 콘솔에 문서를 업로드한 후 다음을 선택합니다. 검색어 FBI 증오 범죄 보고서 문서 구성 부분. 그런 다음 자연어 질문 형식으로 쿼리를 추가할 수 있습니다. 모든 쿼리를 추가한 후 다음을 선택하세요. 구성 적용. 질문에 대한 답변은 다음 페이지에 있습니다. 검색어 탭.

Amazon Textract PlatoBlockchain Data Intelligence의 새로운 쿼리 기능을 사용하여 문서에서 정보를 지정하고 추출합니다. 수직 검색. 일체 포함.

코드 예

이 섹션에서는 문서에 대한 자연어 질문에 대한 답변을 얻기 위해 쿼리 매개변수와 함께 문서 분석 API를 호출하는 방법을 설명합니다. 입력 문서는 바이트 배열 형식이거나 다음 위치에 있습니다. 아마존 단순 스토리지 서비스 (Amazon S3) 버킷. Bytes 속성을 사용하여 Amazon Textract API 작업에 이미지 바이트를 전달합니다. 예를 들어 다음을 사용할 수 있습니다. Bytes 로컬 파일 시스템에서 로드된 문서를 전달하는 속성입니다. 다음을 사용하여 전달된 이미지 바이트 Bytes 속성은 base64로 인코딩되어야 합니다. AWS SDK를 사용하여 Amazon Textract API 작업을 호출하는 경우 코드에서 문서 파일 바이트를 인코딩할 필요가 없을 수도 있습니다. 또는 다음을 사용하여 S3 버킷에 저장된 이미지를 Amazon Textract API 작업에 전달할 수 있습니다. S3Object 재산. S3 버킷에 저장된 문서는 base64로 인코딩할 필요가 없습니다.

쿼리 기능을 사용하면 급여 명세서, 예방 접종 카드, 모기지 문서, 은행 명세서, W-2 양식, 1099 양식 등과 같은 다양한 유형의 문서에서 답변을 얻을 수 있습니다. 다음 섹션에서는 이러한 문서 중 일부를 살펴보고 쿼리 기능이 작동하는 방식을 보여줍니다.

급여 명세서

이 예에서는 다음 예 이미지와 같이 쿼리 기능을 사용하여 급여 명세서를 분석하는 단계를 안내합니다.

Amazon Textract PlatoBlockchain Data Intelligence의 새로운 쿼리 기능을 사용하여 문서에서 정보를 지정하고 추출합니다. 수직 검색. 일체 포함.

다음 샘플 Python 코드를 사용합니다.

import boto3
import json #create a Textract Client
textract = boto3.client('textract') image_filename = "paystub.jpg" response = None
with open(image_filename, 'rb') as document: imageBytes = bytearray(document.read()) # Call Textract AnalyzeDocument by passing a document from local disk
response = textract.analyze_document( Document={'Bytes': imageBytes}, FeatureTypes=["QUERIES"], QueriesConfig={ "Queries": [{ "Text": "What is the year to date gross pay", "Alias": "PAYSTUB_YTD_GROSS" }, { "Text": "What is the current gross pay?", "Alias": "PAYSTUB_CURRENT_GROSS" }] })

다음 코드는 샘플 AWS CLI 명령입니다.

aws textract analyze-document —document '{"S3Object":{"Bucket":"your-s3-bucket","Name":"paystub.jpg"}}' —feature-types '["QUERIES"]' —queries-config '{"Queries":[{"Text":"What is the year to date gross pay", "Alias": "PAYSTUB_YTD_GROSS"}]}' 

이전 예에서 문서 분석 API에 전달한 두 쿼리에 대해 얻은 응답을 분석해 보겠습니다. 다음 응답은 관련 부분만 표시하도록 잘렸습니다.

{ "BlockType":"QUERY", "Id":"cbbba2fa-45be-452b-895b-adda98053153", #id of first QUERY "Relationships":[ { "Type":"ANSWER", "Ids":[ "f2db310c-eaa6-481d-8d18-db0785c33d38" #id of first QUERY_RESULT ] } ], "Query":{ "Text":"What is the year to date gross pay", #First Query "Alias":"PAYSTUB_YTD_GROSS" } }, { "BlockType":"QUERY_RESULT", "Confidence":87.0, "Text":"23,526.80", #Answer to the first Query "Geometry":{...}, "Id":"f2db310c-eaa6-481d-8d18-db0785c33d38" #id of first QUERY_RESULT }, { "BlockType":"QUERY", "Id":"4e2a17f0-154f-4847-954c-7c2bf2670c52", #id of second QUERY "Relationships":[ { "Type":"ANSWER", "Ids":[ "350ab92c-4128-4aab-a78a-f1c6f6718959"#id of second QUERY_RESULT ] } ], "Query":{ "Text":"What is the current gross pay?", #Second Query "Alias":"PAYSTUB_CURRENT_GROSS" } }, { "BlockType":"QUERY_RESULT", "Confidence":95.0, "Text":"$ 452.43", #Answer to the Second Query "Geometry":{...}, "Id":"350ab92c-4128-4aab-a78a-f1c6f6718959" #id of second QUERY_RESULT }

응답에는 BlockType of QUERY 질문한 질문과 Relationships 답변이 있는 블록의 ID가 있는 섹션입니다. 대답은 BlockType of QUERY_RESULT. 문서 분석 API에 대한 입력으로 전달된 별칭은 응답의 일부로 반환되며 답변에 레이블을 지정하는 데 사용할 수 있습니다.

우리는을 사용하여 Amazon Textract 응답 파서 질문, 별칭 및 해당 질문에 대한 답변만 추출하려면 다음을 수행하세요.

import trp.trp2 as t2 d = t2.TDocumentSchema().load(response)
page = d.pages[0] # get_query_answers returns a list of [query, alias, answer]
query_answers = d.get_query_answers(page=page)
for x in query_answers: print(f"{image_filename},{x[1]},{x[2]}") from tabulate import tabulate
print(tabulate(query_answers, tablefmt="github"))

앞의 코드는 다음 결과를 반환합니다.

|------------------------------------|-----------------------|-----------|
| What is the current gross pay? | PAYSTUB_CURRENT_GROSS | $ 452.43 |
| What is the year to date gross pay | PAYSTUB_YTD_GROSS | 23,526.80 |

더 많은 질문과 전체 코드는 다음 노트북에서 확인할 수 있습니다. GitHub 레포.

모기지 메모

Analyze Document Queries API는 다음과 같은 모기지 어음에도 잘 작동합니다.

Amazon Textract PlatoBlockchain Data Intelligence의 새로운 쿼리 기능을 사용하여 문서에서 정보를 지정하고 추출합니다. 수직 검색. 일체 포함.

API를 호출하고 결과를 처리하는 과정은 앞선 예시와 동일합니다. 전체 코드 예제는 다음에서 찾을 수 있습니다. GitHub 레포.

다음 코드는 API를 사용하여 얻은 응답 예시를 보여줍니다.

|------------------------------------------------------------|----------------------------------|---------------|
| When is this document dated? | MORTGAGE_NOTE_DOCUMENT_DATE | March 4, 2022 |
| What is the note date? | MORTGAGE_NOTE_DATE | March 4, 2022 |
| When is the Maturity date the borrower has to pay in full? | MORTGAGE_NOTE_MATURITY_DATE | April, 2032 |
| What is the note city and state? | MORTGAGE_NOTE_CITY_STATE | Anytown, ZZ |
| what is the yearly interest rate? | MORTGAGE_NOTE_YEARLY_INTEREST | 4.150% |
| Who is the lender? | MORTGAGE_NOTE_LENDER | AnyCompany |
| When does payments begin? | MORTGAGE_NOTE_BEGIN_PAYMENTS | April, 2022 |
| What is the beginning date of payment? | MORTGAGE_NOTE_BEGIN_DATE_PAYMENT | April, 2022 |
| What is the initial monthly payments? | MORTGAGE_NOTE_MONTHLY_PAYMENTS | $ 2500 |
| What is the interest rate? | MORTGAGE_NOTE_INTEREST_RATE | 4.150% |
| What is the principal amount borrower has to pay? | MORTGAGE_NOTE_PRINCIPAL_PAYMENT | $ 500,000 |

예방 접종 카드

Amazon Textract 쿼리 기능은 다음 예와 같이 예방 접종 카드 또는 이와 유사한 카드에서 정보를 추출하는 데에도 매우 효과적입니다.

Amazon Textract PlatoBlockchain Data Intelligence의 새로운 쿼리 기능을 사용하여 문서에서 정보를 지정하고 추출합니다. 수직 검색. 일체 포함.

API를 호출하고 결과를 구문 분석하는 프로세스는 급여 명세서에 사용되는 프로세스와 동일합니다. 응답을 처리한 후 다음 정보를 얻습니다.

|------------------------------------------------------------|--------------------------------------|--------------|
| What is the patients first name | PATIENT_FIRST_NAME | Major |
| What is the patients last name | PATIENT_LAST_NAME | Mary |
| Which clinic site was the 1st dose COVID-19 administrated? | VACCINATION_FIRST_DOSE_CLINIC_SITE | XYZ |
| Who is the manufacturer for 1st dose of COVID-19? | VACCINATION_FIRST_DOSE_MANUFACTURER | Pfizer |
| What is the date for the 2nd dose covid-19? | VACCINATION_SECOND_DOSE_DATE | 2/8/2021 |
| What is the patient number | PATIENT_NUMBER | 012345abcd67 |
| Who is the manufacturer for 2nd dose of COVID-19? | VACCINATION_SECOND_DOSE_MANUFACTURER | Pfizer |
| Which clinic site was the 2nd dose covid-19 administrated? | VACCINATION_SECOND_DOSE_CLINIC_SITE | CVS |
| What is the lot number for 2nd dose covid-19? | VACCINATION_SECOND_DOSE_LOT_NUMBER | BB5678 |
| What is the date for the 1st dose covid-19? | VACCINATION_FIRST_DOSE_DATE | 1/18/21 |
| What is the lot number for 1st dose covid-19? | VACCINATION_FIRST_DOSE_LOT_NUMBER | AA1234 |
| What is the MI? | MIDDLE_INITIAL | M |

전체 코드는 다음 노트북에서 확인할 수 있습니다. GitHub 레포.

보험 카드

쿼리 기능은 다음과 같은 보험 카드에서도 잘 작동합니다.

Amazon Textract PlatoBlockchain Data Intelligence의 새로운 쿼리 기능을 사용하여 문서에서 정보를 지정하고 추출합니다. 수직 검색. 일체 포함.

API를 호출하고 결과를 처리하는 과정은 앞서 살펴본 것과 동일합니다. 전체 코드 예제는 다음 노트북에서 확인할 수 있습니다. GitHub 레포.

다음은 API를 사용하여 얻은 응답 예시입니다.

|-------------------------------------|-----------------------------------|---------------|
| What is the insured name? | INSURANCE_CARD_NAME | Jacob Michael |
| What is the level of benefits? | INSURANCE_CARD_LEVEL_BENEFITS | SILVER |
| What is medical insurance provider? | INSURANCE_CARD_PROVIDER | Anthem |
| What is the OOP max? | INSURANCE_CARD_OOP_MAX | $6000/$12000 |
| What is the effective date? | INSURANCE_CARD_EFFECTIVE_DATE | 11/02/2021 |
| What is the office visit copay? | INSURANCE_CARD_OFFICE_VISIT_COPAY | $55/0% |
| What is the specialist visit copay? | INSURANCE_CARD_SPEC_VISIT_COPAY | $65/0% |
| What is the member id? | INSURANCE_CARD_MEMBER_ID | XZ 9147589652 |
| What is the plan type? | INSURANCE_CARD_PLAN_TYPE | Pathway X-EPO |
| What is the coinsurance amount? | INSURANCE_CARD_COINSURANCE | 30% |

쿼리 작성 모범 사례

쿼리를 작성할 때 다음 모범 사례를 고려하세요.

  • 일반적으로 "무엇입니까?" "어디 있습니까?" 또는 "누구입니까?"로 시작하는 자연어 질문을 하십시오. 표준 키-값 쌍을 추출하려는 경우는 예외입니다. 이 경우 키 이름을 쿼리로 전달할 수 있습니다.
  • 형식이 잘못되었거나 문법적으로 잘못된 질문은 피하세요. 예상치 못한 답변이 나올 수 있기 때문입니다. 예를 들어 잘못된 형식의 쿼리는 "언제?"입니다. 잘 구성된 쿼리는 "첫 번째 백신 접종은 언제 이루어졌습니까?"입니다.
  • 가능하다면 문서의 단어를 사용하여 쿼리를 구성하세요. 쿼리 기능은 "SSN", "세금 ID" 및 "사회 보장 번호"와 같은 일부 일반적인 업계 용어에 대한 약어 및 동의어 일치를 시도하지만 문서에서 직접 언어를 사용하면 결과가 향상됩니다. 예를 들어 문서에 '작업 진행 상황'이라고 표시된 경우 '프로젝트 진행 상황', '프로그램 진행 상황', '작업 상태'와 같은 변형을 사용하지 마세요.
  • 행 머리글과 열 머리글 모두의 단어를 포함하는 쿼리를 생성합니다. 예를 들어 앞선 예방접종 카드 예시에서 두 번째 예방접종 날짜를 알기 위해 “2차 접종 날짜는 언제였나요?”로 쿼리를 프레임화할 수 있습니다.
  • 답변이 길면 응답 대기 시간이 늘어나고 시간 초과가 발생할 수 있습니다. 100단어 미만의 답변으로 대답하는 질문을 해보세요.
  • 양식에서 표준 키-값 쌍을 추출하려고 할 때 질문으로 키 이름만 전달하면 작동합니다. 다른 모든 추출 사용 사례에 대해서는 전체 질문을 구성하는 것이 좋습니다.
  • 최대한 구체적으로 작성하세요. 예를 들어:
    • 문서에 여러 섹션(예: "차용자" 및 "공동 차용자")이 포함되어 있고 두 섹션 모두 "SSN"이라는 필드가 있는 경우 "차용자의 SSN이 무엇인가요?"라고 질문하세요. 그리고 “공동차용자의 SSN은 무엇입니까?”
    • 문서에 날짜 관련 필드가 여러 개 있는 경우 쿼리 언어로 구체적으로 설명하고 "문서에 서명된 날짜는 언제입니까?"라고 질문하세요. 또는 “지원서의 생년월일이 언제입니까?” “날짜가 언제예요?”와 같은 모호한 질문은 피하세요.
  • 문서의 레이아웃을 미리 알고 있다면 위치 힌트를 제공하여 결과의 ​​정확성을 높이세요. 예를 들어, "맨 위에 있는 날짜는 언제입니까?"라고 물어보세요. 또는 “왼쪽의 날짜는 언제입니까?” 또는 “하단의 날짜는 언제입니까?”

쿼리 기능에 대한 자세한 내용은 Textract를 참조하세요. 선적 서류 비치.

결론

이 게시물에서는 자연어 질문을 기반으로 급여 명세서, 모기지 증서, 보험 카드, 예방 접종 카드와 같은 문서에서 정보를 빠르고 쉽게 검색할 수 있는 Amazon Textract의 새로운 쿼리 기능에 대한 개요를 제공했습니다. 또한 응답 JSON을 구문 분석하는 방법도 설명했습니다.

자세한 내용은 다음 링크를 참조하세요 문서 분석 , 또는 Amazon Textract 콘솔을 확인하고 이 기능을 사용해 보세요.


저자에 관하여

Amazon Textract PlatoBlockchain Data Intelligence의 새로운 쿼리 기능을 사용하여 문서에서 정보를 지정하고 추출합니다. 수직 검색. 일체 포함.우다이 나라야난 AWS의 수석 솔루션 아키텍트입니다. 그는 고객이 복잡한 비즈니스 과제에 대한 혁신적인 솔루션을 찾도록 돕는 것을 좋아합니다. 그의 핵심 분야는 데이터 분석, 빅데이터 시스템, 머신러닝입니다. 여가 시간에는 스포츠, TV 쇼 시청, 여행을 즐깁니다.

Amazon Textract PlatoBlockchain Data Intelligence의 새로운 쿼리 기능을 사용하여 문서에서 정보를 지정하고 추출합니다. 수직 검색. 일체 포함.라파엘 카이세타 캘리포니아에 본사를 둔 AWS의 수석 솔루션 아키텍트입니다. 그는 10년 넘게 클라우드용 아키텍처를 개발한 경험이 있습니다. 그의 핵심 분야는 서버리스, 컨테이너, 머신러닝입니다. 여가 시간에는 소설책을 읽고 세계 여행을 즐깁니다.

Amazon Textract PlatoBlockchain Data Intelligence의 새로운 쿼리 기능을 사용하여 문서에서 정보를 지정하고 추출합니다. 수직 검색. 일체 포함. 나브니스 나이어 Amazon Textract 팀의 기술 부문 수석 제품 관리자입니다. 그는 AWS 고객을 위한 기계 학습 기반 서비스를 구축하는 데 주력하고 있습니다.

Amazon Textract PlatoBlockchain Data Intelligence의 새로운 쿼리 기능을 사용하여 문서에서 정보를 지정하고 추출합니다. 수직 검색. 일체 포함.마틴 셰이드 Amazon Textract 팀의 선임 ML 제품 SA입니다. 그는 인터넷 관련 기술, 엔지니어링 및 아키텍처 솔루션 분야에서 20년 이상의 경험을 가지고 있습니다. 그는 2014년 AWS에 합류하여 처음에는 AWS 서비스의 가장 효율적이고 확장 가능한 사용에 대해 일부 대규모 AWS 고객을 안내한 후 컴퓨터 비전에 중점을 둔 AI/ML에 집중했습니다. 현재 그는 문서에서 정보를 추출하는 데 집착하고 있습니다.

타임 스탬프 :

더보기 AWS 기계 학습