Menggunakan Document AI untuk Memproses Secara Cerdas Formulir Tulis Tangan Anda (Python)

c65b9ae04aa1853.png

Apa itu Document AI?

Document AI API adalah solusi pemahaman dokumen yang mengambil data tidak terstruktur, seperti dokumen, email, dan sebagainya, serta memudahkan data untuk dipahami, dianalisis, dan digunakan. API ini menyediakan struktur melalui klasifikasi konten, ekstraksi entitas, penelusuran lanjutan, dan lainnya.

Dalam tutorial ini, Anda berfokus pada penggunaan Document AI API dengan Python. Tutorial ini menunjukkan cara menguraikan formulir asupan medis sederhana.

Yang akan Anda pelajari

  • Cara mengaktifkan Document AI API
  • Cara mengautentikasi permintaan API
  • Cara menginstal library klien untuk Python
  • Cara mengurai data dari formulir yang dipindai

Yang akan Anda perlukan

  • Project Google Cloud
  • Browser, seperti Chrome atau Firefox
  • Pengetahuan tentang Python 3

Survei

Bagaimana Anda akan menggunakan tutorial ini?

Hanya membacanya Membacanya dan menyelesaikan latihan

Bagaimana penilaian Anda terhadap pengalaman dengan Python?

Pemula Menengah Mahir

Bagaimana penilaian Anda terhadap pengalaman menggunakan layanan Google Cloud?

Pemula Menengah Mahir

Penyiapan lingkungan mandiri

  1. Login ke Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. (Jika belum memiliki akun Gmail atau G Suite, Anda harus membuatnya.)

Ingat Project ID, nama unik di semua project Google Cloud. (Maaf, nama Anda di atas telah digunakan dan tidak akan berfungsi untuk Anda). Anda harus memberikan ID ini nanti sebagai PROJECT_ID.

  1. Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan resource Google Cloud.

Pastikan untuk mengikuti petunjuk di bagian "Membersihkan". Bagian ini memberi tahu Anda cara mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis seharga $300 USD.

Mulai Cloud Shell

Saat menggunakan Google Cloud, Anda dapat mengoperasikannya dari jarak jauh menggunakan laptop, codelab ini menggunakan Google Cloud Shell, lingkungan command line yang dijalankan di Cloud.

Aktifkan Cloud Shell

  1. Dari Cloud Console, klik Aktifkan Cloud Shell H7JlbhKGHITmsxhQIcLwoe5HXZMhDlYue4K-SPszMxUxDjIeWfOHBfxDHYpmLQTzUmQ7Xx8o6OJUlANnQF0iBuUyfp1RzVad_4nCa0Zz5LtwBlUZFXFCWFrmrWZLqg1MkZz2LdgUDQ.

zlNW0HehB_AFW1qZ4AyebSQUdWm95n7TbnOr7UVm3j9dFcg6oWApJRlC0jnU1Mvb-IQp-trP1Px8xKNwt6o3pP6fyih947sEhOFI4IRF0W7WZk6hFqZDUGXQQXrw21GuMm2ecHrbzQ

Jika belum pernah memulai Cloud Shell, Anda akan melihat layar perantara (di paruh bawah) yang menjelaskan apa itu Cloud Shell. Jika demikian, klik Lanjutkan (dan Anda tidak akan pernah melihatnya lagi). Berikut tampilan layar sekali-tampil tersebut:

kEPbNAo_w5C_pi9QvhFwWwky1cX8hr_xEMGWySNIoMCdi-Djx9AQRqWn-__DmEpC7vKgUtl-feTcv-wBxJ8NwzzAp7mY65-fi2LJo4twUoewT1SUjd6Y3h81RG3rKIkqhoVlFR-G7w

Hanya perlu waktu beberapa saat untuk menyediakan dan terhubung ke Cloud Shell.

pTv5mEKzWMWp5VBrg2eGcuRPv9dLInPToS-mohlrqDASyYGWnZ_SwE-MzOWHe76ZdCSmw0kgWogSJv27lrQE8pvA5OD6P1I47nz8vrAdK7yR1NseZKJvcxAZrPb8wRxoqyTpD-gbhA

Cloud Shell memberi Anda akses terminal ke mesin virtual yang dihosting di cloud. Mesin virtual ini mencakup semua alat pengembangan yang akan Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Banyak, bahkan mungkin semua, pekerjaan Anda dalam codelab ini dapat dilakukan hanya dengan browser atau Chromebook.

Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda sudah diautentikasi dan project sudah ditetapkan ke project ID Anda.

  1. Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa Anda telah diautentikasi:
gcloud auth list

Output perintah

 Credentialed Accounts
ACTIVE  ACCOUNT
*      <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
gcloud config list project

Output perintah

[core]
project = <PROJECT_ID>

Jika tidak, Anda dapat menyetelnya dengan perintah ini:

gcloud config set project <PROJECT_ID>

Output perintah

Updated property [core/project].

Sebelum dapat mulai menggunakan Document AI, Anda harus mengaktifkan API. Buka Cloud Console di browser Anda.

  1. Klik Menu navigasi ☰ > API & Layanan > Library. Telusuri API
  2. Telusuri "Document AI API", lalu klik Aktifkan untuk menggunakan API di project Google Cloud Anda

Pertama-tama, Anda harus membuat instance prosesor Form Parser untuk digunakan di Document AI Platform untuk tutorial ini.

  1. Di console, buka Ringkasan Document AI Platform
  2. Klik Buat Prosesor dan pilih Form ParserProsesor
  3. Tentukan nama prosesor dan pilih region Anda dari daftar.
  4. Klik Buat untuk membuat prosesor
  5. Salin ID prosesor Anda. Anda harus menggunakan ini dalam kode nanti.

(Opsional) Anda dapat menguji prosesor di console dengan mengupload dokumen. Klik Upload Dokumen dan pilih formulir untuk diuraikan. Anda dapat mendownload dan menggunakan formulir contoh ini jika belum memiliki formulir untuk digunakan.

Formulir Kesehatan

Output Anda akan terlihat seperti ini: Formulir yang Diuraikan

Untuk membuat permintaan ke Document AI API, Anda harus menggunakan Akun Layanan. Akun Layanan merupakan milik project Anda dan digunakan oleh library Python Klien Google untuk membuat permintaan API. Seperti akun pengguna lainnya, akun layanan diwakili oleh alamat email. Di bagian ini, Anda akan menggunakan Cloud SDK untuk membuat akun layanan, lalu membuat kredensial yang diperlukan untuk melakukan autentikasi sebagai akun layanan.

Pertama, tetapkan variabel lingkungan dengan PROJECT_ID yang akan Anda gunakan di seluruh codelab ini:

export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value core/project)

Selanjutnya, buat akun layanan baru untuk mengakses Document AI API dengan menggunakan:

gcloud iam service-accounts create my-docai-sa \
  --display-name "my-docai-service-account"

Selanjutnya, buat kredensial yang digunakan kode Python Anda untuk login sebagai akun layanan baru. Buat kredensial ini dan simpan sebagai file JSON "~/key.json" dengan menggunakan perintah berikut:

gcloud iam service-accounts keys create ~/key.json \
  --iam-account  my-docai-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com

Terakhir, tetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS, yang digunakan oleh library untuk menemukan kredensial Anda. Untuk membaca selengkapnya tentang autentikasi formulir ini, lihat panduan. Variabel lingkungan harus ditetapkan ke jalur lengkap file JSON kredensial yang Anda buat, dengan menggunakan:

export GOOGLE_APPLICATION_CREDENTIALS="/path/to/key.json"

Kami memiliki formulir contoh yang dapat digunakan untuk disimpan di Google Cloud Storage. Gunakan perintah berikut untuk mendownloadnya ke direktori kerja Anda.

gsutil cp gs://cloud-samples-data/documentai/form.pdf .

Konfirmasikan bahwa file telah didownload ke cloudshell menggunakan perintah berikut:

ls -ltr form.pdf

Instal library klien:

pip3 install --upgrade google-cloud-documentai
pip3 install --upgrade google-cloud-storage

Anda akan melihat sesuatu seperti ini:

...
Installing collected packages: google-cloud-documentai
Successfully installed google-cloud-documentai-0.3.0
.
.
Installing collected packages: google-cloud-storage
Successfully installed google-cloud-storage-1.35.0

Sekarang, Anda siap untuk menggunakan Document AI API.

Mulai Python Interaktif

Dalam tutorial ini, Anda akan menggunakan penafsir Python interaktif yang disebut IPython. Mulai sesi dengan menjalankan ipython di Cloud Shell. Perintah ini menjalankan penafsir Python dalam sesi interaktif.

ipython

Anda akan melihat sesuatu seperti ini:

Python 3.7.3 (default, Jul 25 2020, 13:03:44)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.13.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

Pada langkah ini, Anda akan membuat panggilan dokumen proses menggunakan endpoint sinkron. Untuk memproses dokumen dalam jumlah besar sekaligus, Anda juga dapat menggunakan API asinkron. Untuk mempelajari lebih lanjut tentang penggunaan Form Parser API, baca panduan di sini.

Salin kode berikut ke sesi iPython:

project_id= 'YOUR_PROJECT_ID'
location = 'YOUR_PROJECT_LOCATION' # Format is 'us' or 'eu'
processor_id = 'YOUR_PROCESSOR_ID' # Create processor in Cloud Console
file_path = 'form.pdf' # The local file in your current working directory

from google.cloud import documentai_v1beta3 as documentai
from google.cloud import storage

def process_document(
    project_id=project_id, location=location, processor_id=processor_id,  file_path=file_path
):

    # Instantiates a client
    client = documentai.DocumentProcessorServiceClient()

    # The full resource name of the processor, e.g.:
    # projects/project-id/locations/location/processor/processor-id
    # You must create new processors in the Cloud Console first
    name = f"projects/{project_id}/locations/{location}/processors/{processor_id}"

    with open(file_path, "rb") as image:
        image_content = image.read()

    # Read the file into memory
    document = {"content": image_content, "mime_type": "application/pdf"}

    # Configure the process request
    request = {"name": name, "document": document}

    # Use the Document AI client to process the sample form
    result = client.process_document(request=request)

    document = result.document
    document_text = document.text
    print("Document processing complete.")
    print("Text: {}".format(document_text))

Jalankan kode Anda sekarang dan Anda akan melihat teks yang diekstrak dan dicetak di console. Pada langkah berikutnya, Anda mengekstrak data terstruktur yang dapat lebih mudah disimpan di database atau digunakan di aplikasi lain.

Memanggil fungsi:

process_document()

Sekarang Anda dapat mengekstrak key-value pair dari formulir dan skor keyakinannya yang sesuai. Objek respons Dokumen berisi daftar halaman dari dokumen input. Setiap objek page berisi daftar kolom formulir dan lokasinya di teks.

Kode berikut melakukan iterasi pada setiap halaman dan mengekstrak serta mencetak setiap kunci, nilai, dan skor keyakinan.

Di bagian bawah fungsi processDocument(), tempel kode berikut:

    document_pages = document.pages

    for page in document_pages:
        print("Page Number:{}".format(page.page_number))
        for form_field in page.form_fields:
            fieldName=get_text(form_field.field_name,document)
            nameConfidence = round(form_field.field_name.confidence,4)
            fieldValue = get_text(form_field.field_value,document)
            valueConfidence = round(form_field.field_value.confidence,4)
            print(fieldName+fieldValue +"  (Confidence Scores: "+str(nameConfidence)+", "+str(valueConfidence)+")")

def get_text(doc_element: dict, document: dict):
    """
    Document AI identifies form fields by their offsets
    in document text. This function converts offsets
    to text snippets.
    """
    response = ""
    # If a text segment spans several lines, it will
    # be stored in different text segments.
    for segment in doc_element.text_anchor.text_segments:
        start_index = (
            int(segment.start_index)
            if segment in doc_element.text_anchor.text_segments
            else 0
        )
        end_index = int(segment.end_index)
        response += document.text[start_index:end_index]
    return response

Sekarang jalankan kode Anda, panggil fungsi tersebut:

process_document()

Anda akan melihat output berikut jika menggunakan dokumen contoh kami:

Document processing complete.
Page Number:1
Marital Status: Single  (Confidence Scores: 1.0000, 1.0000)
DOB: 09/04/1986 (Confidence Scores: 0.9999, 0.9999)
City: Towalo  (Confidence Scores: 0.9996, 0.9996)
Address: 24 Barney Lane  (Confidence Scores: 0.9994, 0.9994)
Referred By: None (Confidence Scores: 0.9968, 0.9968)
Phone #:  (906) 917-3486 (Confidence Scores: 0.9961, 0.9961)
State: NJ  (Confidence Scores: 0.9960, 0.9960)
Emergency Contact Phone: (906) 334-8926 (Confidence Scores: 0.9924, 0.9924)
Name: Sally Walker (Confidence Scores: 0.9922, 0.9922)

Selamat, Anda telah berhasil menggunakan Document AI API untuk mengekstrak data dari formulir tulisan tangan. Sebaiknya Anda bereksperimen dengan gambar formulir lainnya

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 Matikan untuk menghapus project.

Pelajari Lebih Lanjut

Lisensi

Karya ini dilisensikan berdasarkan Lisensi Umum Creative Commons Attribution 2.0.