1. 소개
Document AI는 문서, 이메일 등과 같은 구조화되지 않은 데이터를 가져와 데이터의 이해, 분석, 사용을 쉽게 만들어 주는 문서 이해 솔루션입니다.
Document AI Workbench를 통한 업트레이닝을 사용하면 특수 문서 유형에 대한 라벨이 지정된 예시를 추가로 제공하고 새 모델 버전을 생성하여 문서 처리 정확성을 높일 수 있습니다.
이 실습에서는 인보이스 파서 프로세서를 만들고, 업트레이닝을 위한 프로세서를 구성하고, 예시 문서에 라벨을 지정하고, 프로세서를 업트레이닝합니다.
이 실습에서 사용되는 문서 데이터 세트는 가상 배관 회사를 위해 무작위로 생성된 인보이스로 구성됩니다.
기본 요건
이 Codelab은 다른 Document AI Codelabs에서 다룬 콘텐츠를 기반으로 합니다.
다음 Codelab을 먼저 완료한 후에 진행하는 것이 좋습니다.
- Document AI(Python)를 사용한 광학 문자 인식(OCR)
- Document AI(Python)를 사용한 양식 파싱
- Document AI(Python)를 사용한 전문 프로세서
- Python으로 Document AI 프로세서 관리
- Document AI: 인간 참여형(Human In The Loop)
학습할 내용
- 인보이스 파서 프로세서의 업트레이닝을 구성합니다.
- 주석 도구를 사용하여 Document AI 학습 데이터 라벨 지정
- 새 모델 버전 학습
- 새 모델 버전의 정확도 평가
필요한 항목
2. 설정
이 Codelab에서는 Codelab 소개에 있는 Document AI 설정 단계를 완료했다고 가정합니다.
다음 단계를 완료한 후에 진행하세요.
3. 프로세서 만들기
먼저 이 실습에 사용할 인보이스 파서 프로세서를 만들어야 합니다.
- 콘솔에서 Document AI 개요 페이지로 이동합니다.
- 프로세서 만들기를 클릭하고 전문까지 아래로 스크롤 (또는 검색창에 '인보이스 파서' 입력)한 후 인보이스 파서를 선택합니다.
- 이름을
codelab-invoice-uptraining
로 지정하고(또는 다른 기억하기 쉬운 이름) 목록에서 가장 가까운 리전을 선택합니다.
- 만들기를 클릭하여 프로세서를 만듭니다. 이제 프로세서 개요 페이지가 표시됩니다.
4. 데이터 세트 만들기
프로세서를 학습시키려면 학습 및 테스트 데이터로 데이터 세트를 만들어 프로세서가 추출하려는 항목을 식별하도록 만들어야 합니다.
Cloud Storage에 데이터 세트를 저장할 새 버킷을 만들어야 합니다. 참고: 문서가 현재 저장된 버킷과 동일한 버킷을 사용하면 안 됩니다.
- Cloud Shell을 열고 다음 명령어를 실행하여 버킷을 만듭니다. 또는 Cloud 콘솔에서 새 버킷을 만듭니다. 나중에 필요하므로 이 버킷 이름을 저장해 둡니다.
export PROJECT_ID=$(gcloud config get-value project)
gsutil mb -p $PROJECT_ID "gs://${PROJECT_ID}-uptraining-codelab"
- 데이터 세트 탭으로 이동하여 데이터 세트 만들기를 클릭합니다.
- 1단계에서 만든 버킷의 이름을 대상 경로 필드에 붙여넣습니다. (
gs://
는 포함하지 않음)
- 데이터 세트가 만들어지면 데이터 세트 관리 페이지로 안내됩니다.
5. 테스트 문서 가져오기
이제 샘플 인보이스 PDF를 데이터 세트로 가져오겠습니다.
- 문서 가져오기를 클릭합니다.
- 이 실습에서 사용할 샘플 PDF를 준비했습니다. 다음 링크를 소스 경로 박스에 복사하여 붙여넣습니다. 지금은 '데이터 분할'을 '할당되지 않음'으로 둡니다. 가져오기를 클릭합니다.
cloud-samples-data/documentai/codelabs/uptraining/pdfs
- 문서를 가져올 때까지 기다립니다. 제 테스트에서는 1분 미만의 시간이 걸렸습니다.
- 가져오기가 완료되면 데이터 세트 관리 UI에 문서가 표시됩니다. 클릭하여 라벨 지정 콘솔로 이동합니다.
6. 테스트 문서 라벨 지정
다음으로, 추출하려는 항목의 텍스트 요소와 라벨을 식별합니다. 이 라벨은 모델을 학습시켜 이 특정 문서 구조를 파싱하여 올바른 유형을 식별하는 데 사용됩니다.
- 라벨 지정 콘솔로 이동하면 다음과 같이 표시됩니다.
- '텍스트 선택'을 클릭합니다. 도구로 'McWilliam Piping International Piping Company'라는 텍스트를 강조표시합니다.
supplier_name
라벨을 할당합니다. 텍스트 필터를 사용하여 라벨 이름을 검색할 수 있습니다.
- '14368 Pipeline Ave Chino, CA 91710'라는 텍스트를 강조 표시합니다.
supplier_address
라벨을 할당합니다.
- '10001' 텍스트를 강조표시합니다.
invoice_id
라벨을 할당합니다.
- '2020-01-02' 텍스트를 강조 표시합니다.
due_date
라벨을 할당합니다.
- '경계 상자'로 전환 있습니다. '너클 커플러' 텍스트를 강조표시합니다.
line_item/description
라벨을 할당합니다.
- '9' 텍스트를 강조 표시합니다.
line_item/quantity
라벨을 할당합니다.
- '74.43' 텍스트를 강조 표시합니다.
line_item/unit_price
라벨을 할당합니다.
- '669.87' 텍스트를 강조 표시합니다.
line_item/amount
라벨을 할당합니다.
- 다음 두 광고 항목에 이전 4단계를 반복합니다. 완료되면 다음과 같이 표시됩니다.
- '1,419.57' 텍스트를 강조표시합니다. (소계 옆)를 클릭하고
net_amount
라벨을 할당합니다.
- '113.57' 텍스트를 강조표시합니다. (세금 옆에 있음)을 클릭하고
total_tax_amount
라벨을 지정합니다.
- "1,533.14" 텍스트를 강조 표시합니다. (합계 옆)를 클릭하고
total_amount
라벨을 할당합니다.
- '$' 중 하나를 강조표시합니다.
currency
라벨을 할당합니다.
- 작업이 완료되면 라벨 지정된 문서의 모습은 다음과 유사합니다. 문서의 경계 상자나 왼쪽 메뉴의 이름/값을 클릭하면 이러한 라벨을 수정할 수 있습니다. 라벨 지정이 완료되면 저장을 클릭합니다.
- 다음은 라벨 및 값의 전체 목록입니다.
라벨 이름 | 텍스트 |
| McWilliam Piping International Piping Company |
| 14368 Pipeline Ave Chino, CA 91710 |
| 10001 |
| 2020-01-02 |
| 너클 커플러 |
| 9 |
| 74.43 |
| 669.87 |
| PVC관 12인치 |
| 7 |
| 15.90 |
| 111.30 |
| 구리관 |
| 7 |
| 91.20 |
| 638.40 |
| 1,419.57 |
| 113.57 |
| 1,533.14 |
| $ |
7. 학습 세트에 문서 할당
이제 데이터 세트 관리 콘솔로 돌아갑니다. 라벨이 지정된 문서 및 라벨이 지정되지 않은 문서의 수와 활성 라벨의 수가 변경되었습니다.
- 이 문서를 '학습'이나 '테스트' 중 하나로 할당해야 합니다. 문서를 클릭합니다.
- 세트에 할당을 클릭한 다음 학습을 클릭합니다.
- 데이터 분할 수가 변경되었습니다.
8. 사전에 라벨이 지정된 데이터 가져오기
Document AI 업트레이닝에는 각 세트의 각 라벨의 인스턴스 10개와 함께 학습 및 테스트 세트에 최소 10개의 문서가 필요합니다.
최상의 성능을 위해서는 각 세트에 문서 50개 이상, 각 라벨의 인스턴스 50개 이상을 포함하는 것이 좋습니다. 일반적으로 학습 데이터가 많을수록 정확성이 높아집니다.
100개 문서에 수동으로 라벨을 지정하려면 시간이 오래 걸리므로 이 실습을 위해 가져올 수 있는 사전에 라벨이 지정된 문서를 준비했습니다.
사전에 라벨이 지정된 문서는 Document.json
형식으로 가져올 수 있습니다. 이는 인간 참여형(Human in the Loop, HITL)을 사용하여 프로세서를 호출하고 정확도를 검증한 결과일 수 있습니다.
- 문서 가져오기를 클릭합니다.
- 다음 Cloud Storage 경로를 복사하여 붙여넣어 학습 세트에 할당합니다.
cloud-samples-data/documentai/codelabs/uptraining/training
- 다른 버킷 추가를 클릭합니다. 이제 다음 Cloud Storage 경로를 복사하여 붙여넣어 테스트 세트에 할당합니다.
cloud-samples-data/documentai/codelabs/uptraining/test
- 가져오기를 클릭하고 문서를 가져올 때까지 기다립니다. 이번에는 처리할 문서가 더 많으므로 이전보다 오래 걸립니다. 제 테스트에서는 약 6분 정도 걸렸습니다. 이 페이지를 나갔다가 다시 돌아와도 됩니다.
- 작업이 완료되면 데이터 세트 관리 페이지에서 해당 문서를 볼 수 있습니다.
9. 라벨 수정
이 예에서 사용하는 샘플 문서에는 인보이스 파서에서 지원하는 모든 라벨이 포함되어 있지 않습니다. 학습 전에 사용하지 않는 라벨을 비활성으로 표시해야 합니다. 업트레이닝 전에 비슷한 단계에 따라 커스텀 라벨을 추가할 수도 있습니다.
- 왼쪽 하단에 있는 라벨 관리를 클릭합니다.
- 이제 라벨 관리 콘솔로 이동하게 됩니다.
- 체크박스와 사용 중지/사용 설정 버튼을 사용해 다음 라벨만 사용 설정됨으로 표시합니다.
currency
due_date
invoice_id
line_item/amount
line_item/description
line_item/quantity
line_item/unit_price
net_amount
supplier_address
supplier_name
total_amount
total_tax_amount
- 완료되면 콘솔에 다음과 같이 표시됩니다. 작업이 완료되면 저장을 클릭하세요.
- 뒤로 화살표를 클릭하여 데이터 세트 관리 콘솔로 돌아갑니다. 인스턴스가 0개인 라벨은 비활성으로 표시되어 있습니다.
10. 선택 사항: 새로 가져온 문서를 자동으로 라벨 지정
기존에 배포된 프로세서 버전으로 프로세서의 라벨이 지정되지 않은 문서를 가져올 때 자동 라벨 지정을 사용하면 라벨 지정 시간을 절약할 수 있습니다.
- 학습 페이지에서 문서 가져오기를 클릭합니다.
- 다음 경로를 복사하여 붙여넣습니다. 이 디렉터리에는 라벨이 지정되지 않은 인보이스 PDF 5개가 포함되어 있습니다. 데이터 분할 드롭다운 목록에서 학습을 선택합니다.
cloud-samples-data/documentai/Custom/Invoices/PDF_Unlabeled
- 자동 라벨 지정 섹션에서 자동 라벨 지정을 사용하여 가져오기 체크박스를 선택합니다.
- 기존 프로세서 버전을 선택하여 문서에 라벨을 지정합니다.
- 예:
pretrained-invoice-v1.3-2022-07-15
- 가져오기를 클릭하고 문서를 가져올 때까지 기다립니다. 이 페이지를 나갔다가 다시 돌아와도 됩니다.
- 완료되면 학습 페이지의 자동 라벨 지정 섹션에 문서가 표시됩니다.
- 자동 라벨 지정 문서를 라벨 지정됨으로 표시하지 않고 학습 또는 테스트용으로 사용할 수는 없습니다. 자동 라벨 지정 문서를 보려면 자동 라벨 지정 섹션으로 이동하세요.
- 첫 번째 문서를 선택하여 라벨 지정 콘솔로 이동합니다.
- 라벨, 경계 상자, 값을 검사하여 모두 맞는지 확인합니다. 누락된 값이 있으면 라벨 지정합니다.
- 완료되면 라벨이 지정된 것으로 표시를 선택합니다.
- 자동으로 라벨이 지정된 각 문서에 대해 라벨 확인을 반복한 다음 학습 페이지로 돌아가 학습에 데이터를 사용합니다.
11. 모델 업트레이닝
이제 인보이스 파서의 학습을 시작할 준비가 되었습니다.
- 새 버전 학습을 클릭합니다.
- 버전에 기억할 수 있는 이름(예:
codelab-uptraining-test-1
)을 지정합니다. 기본 버전은 새 버전을 빌드할 모델 버전입니다. 새 프로세서를 사용하는 경우 유일한 옵션은 Google Pretrained Next with Uptraining이어야 합니다.
- (선택 사항) 라벨 통계 보기를 선택하여 데이터 세트의 라벨에 대한 측정항목을 볼 수도 있습니다.
- 학습 시작을 클릭하여 업트레이닝 프로세스를 시작합니다. 데이터 세트 관리 페이지로 리디렉션됩니다. 오른쪽에서 학습 상태를 볼 수 있습니다. 학습을 완료하는 데 몇 시간 정도 걸립니다. 이 페이지를 나갔다가 다시 돌아와도 됩니다.
- 버전 이름을 클릭하면 버전 ID 및 학습 작업의 현재 상태를 보여주는 버전 관리 페이지로 이동합니다.
12. 새 모델 버전 테스트
학습 작업이 완료되면(제 테스트에서는 약 1시간 정도 걸렸음) 새 모델 버전을 테스트할 수 있으며 예측에 바로 사용할 수 있습니다.
- 버전 관리 페이지로 이동합니다. 여기에서 현재 상태 및 F1 점수를 확인할 수 있습니다.
- 사용하기 전에 이 모델 버전을 먼저 배포해야 합니다. 오른쪽에 있는 세로 점을 클릭하고 버전 배포를 선택합니다.
- 팝업 창에서 배포를 선택하고 버전이 배포될 때까지 기다립니다. 완료되기까지 몇 분 정도 걸립니다. 배포가 완료되면 이 버전을 기본 버전으로 설정할 수도 있습니다.
- 배포가 완료되면 평가 탭으로 이동합니다. 그런 다음 버전 드롭다운을 클릭하고 새로 만든 버전을 선택합니다.
- 이 페이지에서 전체 문서의 F1 점수, 정밀도, 재현율을 포함한 평가 측정항목과 개별 라벨을 확인할 수 있습니다. 이러한 측정항목에 관한 자세한 내용은 AutoML 문서를 참고하세요.
- 아래에 링크된 PDF 파일을 다운로드합니다. 이 문서는 학습 또는 테스트 세트에 포함되지 않은 샘플 문서입니다.
- 테스트 문서 업로드를 클릭하고 PDF 파일을 선택합니다.
- 추출된 측정항목은 다음과 같이 표시됩니다.
13. 결론
수고하셨습니다. Document AI를 사용하여 인보이스 파서를 업트레이닝했습니다. 이제 이 프로세서를 사용하여 모든 특수 프로세서와 마찬가지로 인보이스를 파싱할 수 있습니다.
특수 프로세서 Codelab을 참조하여 프로세싱 응답 처리 방법을 검토할 수 있습니다.
삭제하기
이 튜토리얼에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 안내를 따르세요.
- Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.
- 프로젝트 목록에서 해당 프로젝트를 선택한 후 삭제를 클릭합니다.
- 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.
리소스
- Document AI Workbench 문서
- 문서의 미래 - YouTube 재생목록
- Document AI 문서
- Document AI Python 클라이언트 라이브러리
- Document AI 샘플
라이선스
이 작업물은 Creative Commons Attribution 2.0 일반 라이선스에 따라 사용이 허가되었습니다.