1. Pengantar
Document AI adalah solusi pemahaman dokumen yang mengambil data tidak terstruktur seperti dokumen, email, dan lainnya, kemudian membuat data tersebut lebih mudah dipahami, dianalisis, serta digunakan.
Dengan menggunakan pelatihan ulang melalui Document AI Workbench, Anda dapat mencapai akurasi pemrosesan dokumen yang lebih tinggi dengan memberikan contoh berlabel tambahan untuk Jenis Dokumen Khusus dan membuat versi model baru.
Di lab ini, Anda akan membuat prosesor Invoice Parser, mengonfigurasi prosesor untuk pelatihan ulang, memberi label pada dokumen contoh, dan melatih ulang prosesor.
Set data dokumen yang digunakan dalam lab ini terdiri dari faktur yang dibuat secara acak untuk perusahaan pipa fiktif.
Prasyarat
Codelab ini dibangun berdasarkan konten yang disajikan dalam Codelab Document AI lainnya.
Sebaiknya Anda menyelesaikan Codelab berikut sebelum melanjutkan.
- Pengenalan Karakter Optik (OCR) dengan Document AI (Python)
- Penguraian Formulir dengan Document AI (Python)
- Prosesor Terspesialisasi dengan Document AI (Python)
- Mengelola prosesor Document AI dengan Python
- Document AI: Memerlukan Interaksi Manusia
Yang akan Anda pelajari
- Konfigurasi Pelatihan ulang untuk pemroses Parser Invoice.
- Melabeli data pelatihan Document AI menggunakan alat anotasi.
- Melatih versi model baru.
- Evaluasi keakuratan versi model baru.
Yang akan Anda butuhkan
2. Mempersiapkan
Codelab ini akan menganggap Anda telah menyelesaikan langkah-langkah Penyiapan Document AI yang tercantum di Codelab Pengantar.
Harap selesaikan langkah-langkah berikut sebelum melanjutkan:
3. Membuat Prosesor
Anda harus membuat prosesor Invoice Parser terlebih dahulu untuk digunakan di lab ini.
- Di konsol, buka halaman Document AI Overview.

- Klik Create Processor, scroll ke bawah ke Specialized (atau ketik "Invoice Parser" di kotak penelusuran) dan pilih Invoice Parser.

- Beri nama
codelab-invoice-uptraining(Atau hal lain yang akan Anda ingat) dan pilih region terdekat di daftar.

- Klik Create untuk membuat pemroses. Anda kemudian akan melihat halaman Processor Overview.

4. Membuat Set Data
Untuk melatih prosesor, kita harus membuat set data dengan data pelatihan dan pengujian untuk membantu prosesor mengidentifikasi entitas yang ingin kita ekstrak.
Anda harus membuat bucket baru di Cloud Storage untuk menyimpan set data. Catatan: Bucket ini tidak boleh sama dengan bucket tempat dokumen Anda disimpan saat ini.
- Buka Cloud Shell dan jalankan perintah berikut untuk membuat bucket. Atau, buat bucket baru di Konsol Cloud. Simpan nama bucket ini karena Anda akan membutuhkannya nanti.
export PROJECT_ID=$(gcloud config get-value project)
gsutil mb -p $PROJECT_ID "gs://${PROJECT_ID}-uptraining-codelab"
- Buka tab Dataset dan klik Create Dataset

- Tempelkan nama bucket dari bucket yang Anda buat di langkah pertama ke kolom Destination Path. (Jangan menyertakan
gs://)

- Tunggu hingga set data dibuat, lalu Anda akan diarahkan ke halaman Dataset management.

5. Mengimpor Dokumen Uji
Sekarang, impor contoh pdf invoice ke dalam set data Anda.
- Klik Import Documents

- Kami memiliki PDF sampel untuk Anda gunakan di lab ini. Salin dan tempel link berikut ke kotak Source Path. Biarkan "Data split" sebagai "Unassigned" untuk saat ini. Klik Import.
cloud-samples-data/documentai/codelabs/uptraining/pdfs

- Tunggu hingga dokumen selesai diimpor. Dalam pengujian yang saya lakukan, waktunya kurang dari 1 menit.

- Saat impor selesai, Anda akan melihat dokumen ini di UI pengelolaan set data. Klik untuk masuk ke konsol pelabelan.

6. Melabeli Dokumen Uji
Selanjutnya, kita akan mengidentifikasi elemen teks dan label untuk entitas yang akan diekstrak. Label-label ini akan digunakan untuk melatih model kita untuk mengurai struktur dokumen khusus ini dan mengidentifikasi jenis yang benar.
- Sekarang Anda akan berada di konsol pemberian label, yang akan terlihat seperti ini.

- Klik Alat "Select Text", lalu tandai teks "McWilliam Piping International Piping Company" dan beri label
supplier_name. Anda dapat menggunakan filter teks untuk mencari nama label.

- Tandai teks "14368 Pipeline Ave Chino, CA 91710" dan beri label
supplier_address.

- Tandai teks "10001" dan beri label
invoice_id.

- Tandai teks "2020-01-02" dan beri label
due_date.

- Beralihlah ke alat "Kotak Pembatas". Tandai teks "Knuckle Couplers" dan beri label
line_item/description.

- Tandai teks "9" dan beri label
line_item/quantity.

- Tandai teks "74.43" dan beri label
line_item/unit_price.

- Tandai teks "669.87" dan beri label
line_item/amount.

- Ulangi 4 langkah sebelumnya untuk dua item baris berikutnya. Setelah selesai, tampilannya akan seperti ini.

- Tandai teks "1.419,57" (di samping Subtotal) dan beri label
net_amount.

- Tandai teks "113.57" (di samping Pajak) dan beri label
total_tax_amount.

- Tandai teks "1.533,14" (di samping Total) dan beri label
total_amount.

- Tandai salah satu karakter "$" dan beri label
currency.

- Dokumen berlabel akan terlihat seperti ini setelah selesai. Perlu diperhatikan bahwa Anda dapat melakukan penyesuaian pada label ini dengan mengklik kotak pembatas di dokumen atau nama/nilai label di menu sebelah kiri. Klik Simpan setelah Anda selesai memberi label.

- Berikut daftar lengkap label dan nilai
Nama Label | Teks |
| McWilliam Piping International Piping Company |
| 14368 Pipeline Ave Chino, CA 91710 |
| 10001 |
| 2020-01-02 |
| Kopling Knuckle |
| 9 |
| 74,43 |
| 669,87 |
| Pipa PVC 12 Inci |
| 7 |
| 15,90 |
| 111,30 |
| Pipa Tembaga |
| 7 |
| 91,20 |
| 638,40 |
| 1.419,57 |
| 113,57 |
| 1.533,14 |
| $ |
7. Menetapkan Dokumen ke Set Pelatihan
Anda sekarang akan kembali ke konsol Dataset management. Perhatikan bahwa jumlah Dokumen Berlabel dan Tidak Berlabel telah berubah, begitu juga dengan jumlah label aktif.

- Kita perlu menetapkan dokumen ini ke set "Pelatihan"/"Training" atau "Uji"/"Test". Klik Dokumen.

- Klik Assign to Set, lalu klik Training.

- Perhatikan bahwa angka Data Split telah berubah.

8. Mengimpor Data Pra-Label
Pelatihan Ulang Document AI memerlukan minimal 10 dokumen dalam set pelatihan dan pengujian, bersama dengan 10 instance dari setiap label di setiap set.
Anda sebaiknya memiliki minimal 50 dokumen di setiap set dengan 50 instance dari setiap label untuk mendapatkan performa terbaik. Makin banyak data pelatihan, umumnya makin tinggi akurasinya.
Perlu waktu lama untuk melabeli 100 dokumen secara manual. Jadi, kami memiliki beberapa dokumen yang telah diberi label sebelumnya yang dapat Anda impor untuk lab ini.
Anda dapat mengimpor file dokumen yang telah diberi label sebelumnya dalam format Document.json. Ini bisa merupakan hasil dari memanggil prosesor dan memverifikasi keakuratan menggunakan Human in the Loop (HITL).
- Klik Import Document.

- Salin/Tempel jalur Cloud Storage berikut dan tetapkan ke set Training.
cloud-samples-data/documentai/codelabs/uptraining/training
- Klik Add Another Bucket. Kemudian Salin/Tempel jalur Cloud Storage berikut dan tetapkan ke set Test.
cloud-samples-data/documentai/codelabs/uptraining/test

- Klik Import dan tunggu hingga dokumen selesai diimpor. Prosesnya memakan waktu lebih lama daripada sebelumnya karena ada lebih banyak dokumen yang harus diproses. Dalam pengujian yang saya lakukan, waktunya sekitar 6 menit. Anda dapat meninggalkan halaman ini dan kembali lagi nanti.

- Setelah selesai, Anda akan melihat dokumen di halaman Dataset management.

9. Edit Label
Contoh dokumen yang kita gunakan untuk contoh ini tidak berisi setiap label yang didukung oleh Invoice Parser. Kita perlu menandai label yang tidak kita gunakan sebagai tidak aktif sebelum pelatihan. Anda juga dapat mengikuti langkah-langkah serupa untuk menambahkan label kustom sebelum Pelatihan Ulang.
- Klik Manage Labels di sudut kiri bawah.

- Anda sekarang seharusnya berada di konsol Label Management.

- Gunakan Kotak Centang dan tombol Nonaktifkan/Aktifkan untuk menandai HANYA label berikut sebagai Diaktifkan.
currencydue_dateinvoice_idline_item/amountline_item/descriptionline_item/quantityline_item/unit_pricenet_amountsupplier_addresssupplier_nametotal_amounttotal_tax_amount
- Konsol akan terlihat seperti ini setelah selesai. Klik Save setelah selesai.

- Klik panah Back untuk kembali ke konsol Dataset management. Perhatikan bahwa label dengan 0 instance telah ditandai sebagai Tidak Aktif.

10. Opsional: Otomatis melabeli dokumen yang baru diimpor
Saat mengimpor dokumen yang tidak berlabel untuk pemroses dengan versi pemroses yang sudah di-deploy, Anda dapat menggunakan Pelabelan otomatis untuk menghemat waktu pelabelan.
- Di halaman Train, klik Import Document.
- Salin dan tempel jalur berikut. Direktori ini berisi 5 PDF invoice tanpa label. Dari daftar dropdown Data split, pilih Training.
cloud-samples-data/documentai/Custom/Invoices/PDF_Unlabeled - Di bagian Auto-labeling, pilih kotak centang Import with auto-labeling.
- Pilih versi prosesor yang ada untuk melabeli dokumen.
- Contoh:
pretrained-invoice-v1.3-2022-07-15
- Klik Import dan tunggu hingga dokumen selesai diimpor. Anda dapat meninggalkan halaman ini dan kembali lagi nanti.
- Setelah selesai, dokumen akan muncul di halaman Train di bagian Auto-labeled.
- Anda tidak dapat menggunakan dokumen berlabel otomatis untuk pelatihan atau pengujian tanpa menandainya sebagai berlabel. Buka bagian Auto-labeled untuk melihat dokumen berlabel otomatis.
- Pilih dokumen pertama untuk masuk ke konsol pelabelan.
- Verifikasikan label, kotak pembatas, dan nilai untuk memastikan semuanya benar. Beri label pada nilai apa pun yang dihilangkan.
- Pilih Mark as labeled setelah selesai.
- Ulangi verifikasi label untuk setiap dokumen yang diberi label otomatis, lalu kembali ke halaman Train untuk menggunakan data tersebut untuk pelatihan.
11. Melatih Model
Sekarang, kita siap untuk mulai melatih Parser Invoice kita.
- Klik Train New Version

- Beri nama pada versi Anda dengan nama yang mudah diingat, seperti
codelab-uptraining-test-1. Versi Dasar adalah versi model yang akan digunakan untuk membangun versi baru ini. Jika Anda menggunakan prosesor baru, satu-satunya opsi yang tersedia adalah Google Pretrained Next with Uptraining

- (Opsional) Anda juga dapat memilih View Label Stats untuk melihat metrik terkait label tersebut di set data Anda.

- Klik Start Training untuk memulai proses Uptraining. Anda akan diarahkan ke halaman Dataset management. Anda dapat melihat status pelatihan di sisi kanan. Diperlukan waktu beberapa jam untuk menyelesaikan pelatihan. Anda dapat meninggalkan halaman ini dan kembali lagi nanti.

- Jika Anda mengklik nama versi, Anda akan diarahkan ke halaman Manage Version, yang menunjukkan ID Versi dan status Tugas Pelatihan saat ini.

12. Menguji Versi Model Baru
Setelah Tugas Pelatihan selesai (perlu waktu sekitar 1 jam dalam pengujian saya), Anda sekarang dapat menguji versi model baru dan mulai menggunakannya untuk melakukan prediksi.
- Buka halaman Manage Versions. Di sini Anda dapat melihat status terkini dan Skor F1.

- Kita perlu men-deploy versi model ini sebelum dapat digunakan. Klik titik vertikal di sisi kanan lalu pilih Deploy Version.

- Pilih Deploy dari jendela pop-up, lalu tunggu hingga versi di-deploy. Prosesnya perlu waktu beberapa menit sampai selesai. Setelah di-deploy, Anda juga dapat menetapkan versi ini sebagai Versi Default.

- Setelah selesai di-deploy, buka Tab Evaluate. Kemudian, klik dropdown Versi dan pilih versi yang baru saja kita buat.

- Di halaman ini, Anda dapat melihat metrik evaluasi termasuk skor F1, Presisi, dan Recall untuk dokumen lengkap serta masing-masing label. Anda dapat membaca info selengkapnya tentang metrik ini di Dokumentasi AutoML.
- Download file PDF yang link-nya ada di bawah ini. Ini adalah sampel dokumen yang tidak disertakan dalam set Pelatihan atau Pengujian.
- Klik Upload Test Document dan pilih file PDF.

- Entitas yang diekstrak akan terlihat seperti ini.

13. Kesimpulan
Selamat, Anda telah berhasil menggunakan Document AI untuk melatih ulang Parser Invoice. Sekarang Anda dapat menggunakan pemroses ini untuk mengurai invoice sebagaimana halnya dengan Pemroses Khusus lain.
Anda dapat merujuk ke Codelab Prosesor Khusus untuk meninjau cara menangani respons pemrosesan.
Pembersihan
Agar tidak menimbulkan tagihan ke akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini:
- Di Cloud Console, buka halaman Mengelola resource.
- Dalam daftar project, pilih project Anda lalu klik Hapus.
- Pada dialog, ketik project ID, lalu klik Shut Down untuk menghapus project.
Resource
- Dokumentasi Document AI Workbench
- Masa Depan Dokumen - Playlist YouTube
- Dokumentasi Document AI
- Library Klien Python Document AI
- Sampel Document AI
Lisensi
Karya ini dilisensikan berdasarkan Lisensi Umum Creative Commons Attribution 2.0.