Amazon Textract를 사용하여 PDF 파일에서 콘텐츠 자동 추출 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon Textract를 사용하여 PDF 파일에서 콘텐츠 자동 추출

작성자: Tianxia Jia(AWS)

환경: 프로덕션

기술: 기계 학습 및 AI, 분석, 빅 데이터

AWS 서비스: Amazon S3, Amazon Textract, Amazon SageMaker

요약

많은 조직에서 비즈니스 애플리케이션에 업로드된 PDF 파일에서 정보를 추출해야 합니다. 예를 들어 조직은 세금 분석 또는 의료 청구 처리를 위해 세금 또는 의료 PDF 파일에서 정보를 정확하게 추출해야 할 수 있습니다.

Amazon Web Services(AWS) 클라우드에서 Amazon Textract는 PDF 파일에서 정보(예: 인쇄된 텍스트, 양식 및 테이블)를 자동으로 추출하고 원본 파일의 정보가 포함된 JSON형식이 지정된 PDF 파일을 생성합니다. AWS 관리 콘솔에서 또는 API 호출을 구현하여 Amazon Textract를 사용할 수 있습니다. 프로그래밍 호출API을 사용하여 많은 수의 PDF 파일을 확장하고 자동으로 처리하는 것이 좋습니다.

Amazon Textract는 파일을 처리할 때 페이지, 텍스트 줄 및 단어, 양식(키-값 쌍), 테이블 및 셀, 선택 요소 등의 Block 객체 목록을 생성합니다. 경계 상자, 신뢰 구간, IDs및 관계와 같은 다른 객체 정보도 포함됩니다. Amazon Textract는 콘텐츠 정보를 문자열로 추출합니다. 다운스트림 애플리케이션에서 더 쉽게 사용할 수 있으므로 데이터 값을 정확하게 식별하고 변환해야 합니다. 

이 패턴은 Amazon Textract를 사용하여 PDF 파일에서 콘텐츠를 자동으로 추출하여 깨끗한 출력으로 처리하기 위한 워크플로를 설명합니다 step-by-step. 이 패턴은 템플릿 매칭 기법을 사용하여 필수 필드, 키 이름 및 테이블을 정확하게 식별한 후 각 데이터 유형에 사후 처리 수정 사항을 적용합니다. 이 패턴을 사용하여 다양한 유형의 PDF 파일을 처리한 다음 이 워크플로를 확장하고 자동화하여 동일한 형식의 PDF 파일을 처리할 수 있습니다.  

사전 조건 및 제한 사항

사전 조건 

  • 활성 상태의 AWS 계정.

  • Amazon Textract에서 JPEG 처리하기 위해 파일로 변환된 후 PDF 파일을 저장하는 기존 Amazon Simple Storage Service(Amazon S3) 버킷입니다. S3 버킷에 대한 자세한 내용은 Amazon S3 설명서의 버킷 개요를 참조하십시오.

  • Textract_PostProcessing.ipynb Jupyter Notebook (첨부됨), 설치 및 구성됨. Jupyter 노트북에 대한 자세한 내용은 Amazon SageMaker 설명서의 Jupyter 노트북 생성을 참조하세요.

  • 형식이 동일한 기존 PDF 파일입니다.

  • Python에 대한 이해.

제한 사항

아키텍처

이 패턴의 워크플로는 먼저 샘플 PDF 파일에서 Amazon Textract를 실행한 다음(처음 실행 ) 첫 번째 파일과 동일한 형식의 PDF 파일에서 실행합니다PDF(반복 실행 ). 다음 다이어그램은 동일한 형식의 PDF 파일에서 콘텐츠를 자동 및 반복적으로 추출하는 통합 최초 실행반복 실행 워크플로를 보여줍니다.

Amazon Textract를 사용하여 PDF 파일에서 콘텐츠 추출

이 다이어그램은 이 패턴에 대해 다음 워크플로를 보여 줍니다.

  1. PDF 파일을 JPEG 형식으로 변환하고 S3 버킷에 저장합니다. 

  2. Amazon Textract를 호출API하고 Amazon Textract 응답 JSON 파일을 구문 분석합니다. 

  3. 각 필수 필드에 올바른 KeyName:DataType 페어를 추가하여 JSON 파일을 편집합니다. 반복 실행 단계를 위한 TemplateJSON 파일을 생성합니다.

  4. 각 데이터 유형(예: 부동 소수점, 정수, 날짜)에 대한 사후 처리 수정 함수를 정의합니다.

  5. 첫 번째 PDF 파일과 동일한 형식의 PDF 파일을 준비합니다.

  6. Amazon Textract를 호출API하고 Amazon Textract 응답 을 구문 분석합니다JSON.

  7. 구문 분석된 JSON 파일을 TemplateJSON 파일과 일치시킵니다.

  8. 사후 처리 수정을 구현합니다.

최종 JSON 출력 파일에는 각 필수 필드에 Value 대해 올바른 KeyName 및 가 있습니다.

대상 기술 스택  

  • Amazon SageMaker 

  • Amazon S3 

  • Amazon Textract

자동화 및 규모 조정

새 PDF 파일이 Amazon S3에 추가될 때 Amazon Textract를 시작하는 AWS Lambda 함수를 사용하여 반복 실행 워크플로를 자동화할 수 있습니다. 그러면 Amazon Textract가 처리 스크립트를 실행하고 최종 출력을 스토리지 위치에 저장할 수 있습니다. 이에 대한 자세한 내용은 Lambda 설명서에서 Amazon S3 트리거를 사용하여 Lambda 함수 호출을 참고하십시오.

도구

  • Amazon SageMaker은 완전 관리형 ML 서비스로, ML 모델을 빠르고 쉽게 빌드 및 훈련한 다음 프로덕션 준비 호스팅 환경에 직접 배포할 수 있도록 지원합니다.

  • Amazon Simple Storage Service(S3)는 원하는 양의 데이터를 저장, 보호 및 검색하는 데 도움이 되는 클라우드 기반 객체 스토리지 서비스입니다.

  • Amazon Textract를 사용하면 애플리케이션에 문서 텍스트 감지 및 분석을 쉽게 추가할 수 있습니다.

에픽

작업설명필요한 기술

PDF 파일을 변환합니다.

파일을 단일 페이지로 분할하고 Amazon Textract 동기식 작업()의 JPEG 형식으로 변환하여 처음 실행할 PDF 파일을 준비합니다Syn API.

참고: Amazon Textract 비동기 작업(Asyn API)을 여러 페이지 PDF 파일에 사용할 수도 있습니다.

데이터 사이언티스트, 개발자

Amazon Textract 응답 을 구문 분석합니다JSON.

Textract_PostProcessing.ipynb Jupyter 노트북(첨부됨)을 열고 다음 코드를 API 사용하여 Amazon Textract를 호출합니다.

response = textract.analyze_document( Document={ 'S3Object': { 'Bucket': BUCKET, 'Name': '{}'.format(filename) } }, FeatureTypes=["TABLES", "FORMS"])

다음 코드를 사용하여 응답을 JSON 양식과 테이블로 구문 분석합니다.

parseformKV=form_kv_from_JSON(response) parseformTables=get_tables_fromJSON(response)
데이터 사이언티스트, 개발자

템플릿JSON 파일을 편집합니다.

KeyName 및 해당DataType(예: 문자열, 부동 소수점, 정수 또는 날짜) 및 테이블 헤더(예: ColumnNames 및 )에 JSON 대해 구문 분석을 편집합니다RowNames.

이 템플릿은 각 개별 PDF 파일 유형에 사용됩니다. 즉, 형식이 동일한 PDF 파일에 템플릿을 재사용할 수 있습니다.

데이터 사이언티스트, 개발자

사후 처리 수정 함수를 정의합니다.

TemplateJSON 파일에 대한 Amazon Textract의 응답 값은 문자열입니다. 날짜, 부동 소수점, 정수 또는 통화에는 차이가 없습니다. 이러한 값은 다운스트림 사용 사례에 맞는 올바른 데이터 유형으로 변환되어야 합니다. 

다음 코드를 사용하여 TemplateJSON 파일에 따라 각 데이터 유형을 수정하십시오.

finalJSON=postprocessingCorrection(parsedJSON,templateJSON)
데이터 사이언티스트, 개발자
작업설명필요한 기술

PDF 파일을 준비합니다.

PDF 파일을 단일 페이지로 분할하고 Amazon Textract 동기 작업()의 JPEG 형식으로 변환하여 파일을 준비합니다Syn API.

참고: Amazon Textract 비동기 작업(Asyn API)을 여러 페이지 PDF 파일에 사용할 수도 있습니다.

데이터 사이언티스트, 개발자

Amazon Textract 를 호출합니다API.

다음 코드를 API 사용하여 Amazon Textract를 호출합니다.

response = textract.analyze_document( Document={ 'S3Object': { 'Bucket': BUCKET, 'Name': '{}'.format(filename) } }, FeatureTypes=["TABLES", "FORMS"])
데이터 사이언티스트, 개발자

Amazon Textract 응답 을 구문 분석합니다JSON.

다음 코드를 사용하여 응답을 JSON 양식과 테이블로 구문 분석합니다.

parseformKV=form_kv_from_JSON(response) parseformTables=get_tables_fromJSON(response)
데이터 사이언티스트, 개발자

템플릿JSON 파일을 로드하고 구문 분석된 와 일치시킵니다JSON.

다음 명령을 사용하여 TemplateJSON 파일을 사용하여 올바른 키-값 페어와 테이블을 추출합니다.

form_kv_corrected=form_kv_correction(parseformKV,templateJSON) form_table_corrected=form_Table_correction(parseformTables, templateJSON) form_kv_table_corrected_final={**form_kv_corrected , **form_table_corrected}
데이터 사이언티스트, 개발자

사후 처리 수정.

TemplateJSON 파일의 DataType 및 사후 처리 함수에서 다음 코드를 사용하여 데이터를 수정할 수 있습니다. 

finalJSON=postprocessingCorrection(form_kv_table_corrected_final,templateJSON)
데이터 사이언티스트, 개발자

관련 리소스

첨부

이 문서와 관련된 추가 콘텐츠에 액세스하려면 attachment.zip 파일의 압축을 풉니다.