Contoh: Membuat keterampilan kustom Form Recognizer (Diarsipkan)

Contoh ini diarsipkan dan tidak didukung. Ini menjelaskan cara membuat keterampilan kustom Form Recognizer menggunakan C# dan Visual Studio.

Prasyarat

  • Visual Studio (edisi apa pun).
  • Setidaknya lima bentuk dengan jenis yang sama. Anda dapat menggunakan data sampel yang disediakan dengan panduan ini.

Membuat sumber daya Form Recognizer

Lihat Buat sumber daya Form Recognizer

Melatih model Anda

Anda harus melatih model Form Recognizer dengan formulir input sebelum menggunakan kemampuan ini. Menggunakan model Form Recognizer menjelaskan cara melatih model. Anda dapat menggunakan data sampel atau menyediakan data Anda sendiri.

Setelah model dilatih, salin nilai ID-nya ke lokasi yang aman.

Mengatur keahlian kustom

Tutorial ini menggunakan proyek AnalyzeForm di repositori GitHub Azure Search Power Skills. Kloning repositori ini ke komputer lokal Anda dan navigasikan ke Visi/AnalyzeForm/ untuk mengakses proyek. Kemudian buka AnalyzeForm.csproj di Visual Studio. Proyek ini membuat sumber daya Azure Function yang memenuhi antarmuka keterampilan kustom dan dapat digunakan untuk pengayaan Azure Cognitive Search. Memasukkan dokumen formulir sebagai input, dan menghasilkan (sebagai teks) pasangan kunci/nilai yang Anda tentukan.

Pertama, tambahkan variabel lingkungan tingkat proyek. Temukan proyek AnalyzeForm di panel kiri, klik kanan dan pilih Properti . Di jendela Properti, pilih tab Debug lalu temukan bidang Variabel Lingkungan. Pilih Tambahkan untuk menambahkan variabel berikut:

  • FORMS_RECOGNIZER_ENDPOINT_URL dengan nilai yang ditetapkan ke URL titik akhir Anda.
  • FORMS_RECOGNIZER_API_KEY dengan nilai yang ditetapkan sebagai kunci langganan Anda.
  • FORMS_RECOGNIZER_MODEL_ID dengan nilai yang telah diatur pada ID model yang Anda latih.
  • FORMS_RECOGNIZER_RETRY_DELAY dengan nilai disetel ke 1000. Nilai ini adalah waktu dalam milidetik bahwa program akan menunggu sebelum mencoba kembali kueri.
  • FORMS_RECOGNIZER_MAX_ATTEMPTS dengan nilai yang ditetapkan menjadi 100. Nilai ini adalah berapa kali program akan mengkueri layanan saat mencoba mendapatkan respons yang berhasil.

Selanjutnya, buka AnalyzeForm.cs dan temukan variabel fieldMappings, yang mereferensikan file field-mappings.json. File ini (dan variabel yang mereferensikannya) menentukan daftar kunci yang ingin Anda ekstrak dari formulir Anda dan label kustom untuk setiap kunci. Misalnya, nilai { "Address:", "address" }, { "Invoice For:", "recipient" } berarti skrip hanya akan menyimpan nilai untuk bidang Address: dan Invoice For: yang terdeteksi, dan masing-masing akan memberi label nilai tersebut dengan "address" dan "recipient".

Terakhir, perhatikan variabel contentType. Skrip ini menjalankan model Form Recognizer pada dokumen yang tersedia dari jarak jauh dan dirujuk oleh URL, sehingga tipe kontennya adalah application/json. Jika Anda ingin menganalisis file lokal dengan menyertakan aliran byte mereka dalam permintaan HTTP, Anda harus mengubah contentType ke jenis MIME yang sesuai untuk file Anda.

Menguji fungsi dari Visual Studio

Setelah mengedit proyek, simpan dan atur proyek AnalyzeForm sebagai proyek startup di Visual Studio (jika belum diatur). Kemudian tekan F5 untuk menjalankan fungsi di lingkungan lokal Anda. Gunakan layanan REST seperti Postman untuk memanggil fungsi.

Permintaan HTTP

Anda akan membuat permintaan berikut untuk memanggil fungsi.

POST http://localhost:7071/api/analyze-form

Isi permintaan

Mulai dengan templat isi permintaan

{
    "values": [
        {
            "recordId": "record1",
            "data": { 
                "formUrl": "<your-form-url>",
                "formSasToken": "<your-sas-token>"
            }
        }
    ]
}

Di sini Anda harus menyediakan URL formulir yang memiliki jenis yang sama dengan formulir yang Anda latih. Untuk tujuan pengujian, Anda dapat menggunakan salah satu formulir pelatihan Anda. Jika Anda mengikuti panduan cepat cURL, formulir Anda akan berada pada akun Azure Blob Storage. Buka Azure Storage Explorer, temukan file formulir, klik kanan, dan pilih Dapatkan Tanda Tangan Akses Bersama. Jendela dialog berikutnya akan menyediakan URL dan token SAS. Masukkan string ini di bidang "formUrl" dan "formSasToken" isi permintaan Anda.

penjelajah penyimpanan Azure; dokumen pdf dipilih

Jika Anda ingin menganalisis dokumen jarak jauh yang tidak ada di Azure Blob Storage, tempelkan URL-nya di bidang "formUrl" dan biarkan bidang "formSasToken" kosong.

Nota

Ketika keterampilan diintegrasikan ke dalam kumpulan keterampilan, URL dan token akan diberikan oleh Cognitive Search.

Jawaban

Anda akan melihat respons yang mirip dengan contoh berikut:

{
    "values": [
        {
            "recordId": "record1",
            "data": {
                "address": "1111 8th st. Bellevue, WA 99501 ",
                "recipient": "Southridge Video 1060 Main St. Atlanta, GA 65024 "
            },
            "errors": null,
            "warnings": null
        }
    ]
}

Menerbitkan fungsi ke Azure

Ketika Anda puas dengan perilaku fungsi, Anda dapat menerbitkannya.

  1. Di Penjelajah Solusi di Visual Studio, klik kanan proyek dan pilih Terbitkan. Pilih Buat Baru>Terbitkan.
  2. Jika Anda belum menghubungkan Visual Studio ke akun Azure Anda, pilih Tambahkan akun....
  3. Ikuti perintah di layar. Tentukan nama unik untuk layanan aplikasi Anda, langganan Azure, grup sumber daya, paket hosting, dan akun penyimpanan yang ingin Anda gunakan. Anda dapat membuat grup sumber daya baru, paket hosting baru, dan akun penyimpanan baru jika Anda belum memilikinya. Setelah selesai, pilih Buat.
  4. Setelah penyebaran selesai, perhatikan URL Situs. URL ini adalah alamat aplikasi fungsi Anda di Azure. Simpan ke lokasi sementara.
  5. Di portal Microsoft Azure , navigasikan ke Grup Sumber Daya, dan cari Fungsi AnalyzeForm yang Anda terbitkan. Di bawah bagian Kelola, Anda akan melihat Kunci Host. Salin kunci host default dan simpan ke lokasi sementara.

Menghubungkan ke pipeline Anda

Untuk menggunakan keterampilan ini dalam alur Cognitive Search, Anda harus menambahkan definisi keterampilan ke set keterampilan Anda. Blok JSON berikut adalah contoh definisi keterampilan (Anda harus memperbarui input dan output untuk mencerminkan skenario dan lingkungan keterampilan tertentu Anda). Ganti AzureFunctionEndpointUrl dengan URL fungsi Anda, dan ganti AzureFunctionDefaultHostKey dengan kunci host Anda.

{ 
  "description":"Skillset that invokes the Form Recognizer custom skill",
  "skills":[ 
    "[... your existing skills go here]",
    { 
      "@odata.type":"#Microsoft.Skills.Custom.WebApiSkill",
      "name":"formrecognizer",
      "description":"Extracts fields from a form using a pre-trained form recognition model",
      "uri":"[AzureFunctionEndpointUrl]/api/analyze-form?code=[AzureFunctionDefaultHostKey]",
      "httpMethod":"POST",
      "timeout":"PT30S",
      "context":"/document",
      "batchSize":1,
      "inputs":[ 
        { 
          "name":"formUrl",
          "source":"/document/metadata_storage_path"
        },
        { 
          "name":"formSasToken",
          "source":"/document/metadata_storage_sas_token"
        }
      ],
      "outputs":[ 
        { 
          "name":"address",
          "targetName":"address"
        },
        { 
          "name":"recipient",
          "targetName":"recipient"
        }
      ]
    }
  ]
}