Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam artikel ini, pelajari cara menghasilkan teks menggunakan pengayaan AI dan perangkat keterampilan. Gambar sering berisi informasi berguna yang relevan dalam skenario pencarian. Anda dapat mem-vektorisasi gambar untuk mewakili konten visual dalam indeks pencarian Anda. Atau, Anda dapat menggunakan pengayaan AI dan keterampilan untuk membuat dan mengekstrak teks yang dapat dicari dari gambar.
Keterampilan GenAI Prompt (pratinjau) menghasilkan deskripsi setiap gambar di sumber data Anda dan pengindeks mendorong deskripsi tersebut ke dalam indeks pencarian. Untuk menampilkan deskripsi, Anda bisa menjalankan kueri yang menyertakannya dalam respons.
Prasyarat
Untuk bekerja dengan konten gambar dalam set keterampilan, Anda memerlukan:
- Sumber data yang didukung
- File atau blob yang berisi gambar
- Membaca akses pada sumber data yang didukung. Artikel ini menggunakan autentikasi berbasis kunci, tetapi pengindeks juga dapat terhubung menggunakan identitas layanan pencarian dan autentikasi ID Microsoft Entra. Untuk kontrol akses berbasis peran, tetapkan peran pada sumber data untuk memungkinkan akses baca oleh identitas layanan. Jika Anda menguji pada komputer pengembangan lokal, pastikan Anda juga memiliki akses baca di sumber data yang didukung.
- Pengindeks pencarian, dikonfigurasi untuk tindakan gambar
- Kumpulan keterampilan memandu prompt GenAI kustom yang baru
- Indeks pencarian dengan bidang untuk menerima output teks verbal, ditambah pemetaan bidang output di pengindeks yang menetapkan asosiasi
Secara opsional, Anda dapat menentukan proyeksi untuk menerima output yang dianalisis gambar ke dalam penyimpanan pengetahuan untuk skenario penambangan data.
Mengonfigurasi pengindeks untuk pemrosesan gambar
Setelah file sumber disiapkan, aktifkan normalisasi gambar dengan mengatur imageAction
parameter dalam konfigurasi pengindeks. Normalisasi gambar membantu membuat gambar lebih seragam untuk pemrosesan hilir. Normalisasi gambar mencakup operasi berikut:
- Gambar besar diubah ukurannya menjadi tinggi dan lebar maksimum untuk membuatnya seragam.
- Untuk gambar yang memiliki metadata yang menentukan orientasi, rotasi gambar disesuaikan untuk pemuatan vertikal.
Perhatikan bahwa mengaktifkan imageAction
(mengatur parameter ini ke selain none
) akan dikenakan biaya tambahan untuk ekstraksi gambar sesuai dengan harga Azure AI Search.
Buat atau perbarui pengindeks untuk mengatur properti konfigurasi:
{ "parameters": { "configuration": { "dataToExtract": "contentAndMetadata", "parsingMode": "default", "imageAction": "generateNormalizedImages" } } }
Atur
dataToExtract
kecontentAndMetadata
(diperlukan).Verifikasi bahwa
parsingMode
diatur ke default (diperlukan).Parameter ini menentukan granularitas dokumen pencarian yang dibuat dalam indeks. Mode default menyiapkan korespondensi satu-ke-satu sehingga satu blob menghasilkan satu dokumen pencarian. Jika dokumen besar, atau jika keterampilan memerlukan potongan teks yang lebih kecil, Anda dapat menambahkan keterampilan Pemisahan Teks yang membagi dokumen menjadi halaman untuk tujuan pemrosesan. Tetapi untuk skenario pencarian, satu blob per dokumen diperlukan jika pengayaan mencakup pemrosesan gambar.
Atur
imageAction
untuk mengaktifkan simpulnormalized_images
di pohon pengayaan (diperlukan):generateNormalizedImages
untuk menghasilkan array gambar yang dinormalisasi sebagai bagian dari pemecahan dokumen.generateNormalizedImagePerPage
(hanya berlaku untuk PDF) untuk menghasilkan array gambar yang dinormalisasi di mana setiap halaman dalam PDF dirender ke satu gambar output. Untuk file non-PDF, perilaku parameter ini mirip seolah-olah Anda telah mengaturgenerateNormalizedImages
. Namun, pengaturangenerateNormalizedImagePerPage
dapat membuat operasi pengindeksan kurang berkinerja berdasarkan desain (terutama untuk dokumen besar) karena beberapa gambar harus dihasilkan.
Secara opsional, sesuaikan lebar atau tinggi gambar yang dinormalisasi yang dihasilkan:
normalizedImageMaxWidth
dalam piksel. Defaultnya adalah 2.000. Nilai maksimum adalah 10.000.normalizedImageMaxHeight
dalam piksel. Defaultnya adalah 2.000. Nilai maksimum adalah 10.000.
Tentang gambar yang dinormalisasi
Ketika imageAction
diatur ke nilai selain tidak ada, bidang baru normalized_images
berisi array gambar. Setiap gambar adalah jenis kompleks yang memiliki anggota berikut:
Anggota gambar | Deskripsi |
---|---|
data | BASE64 pengodean untai (karakter) gambar yang dinormalkan dalam format JPEG. |
lebar | Lebar gambar yang dinormalkan dalam piksel. |
Tinggi | Tinggi gambar yang dinormalkan dalam piksel. |
lebarAsli | Lebar asli gambar sebelum normalisasi. |
tinggiAsli | Tinggi asli gambar sebelum normalisasi. |
rotasiDariOriginal | Rotasi berlawanan arah jarum jam dalam derajat yang terjadi untuk membuat gambar yang dinormalisasi. Nilai antara 0 derajat dan 360 derajat. Langkah ini membaca metadata dari gambar yang dihasilkan oleh kamera atau pemindai. Biasanya kelipatan 90 derajat. |
kontenOffset | Karakter diimbangi di dalam bidang konten tempat gambar diekstraksi. Bidang ini hanya berlaku untuk file dengan gambar yang disematkan.
contentOffset untuk gambar yang diekstrak dari dokumen PDF selalu di akhir teks pada halaman tempat gambar diekstraksi dalam dokumen. Ini berarti gambar muncul setelah semua teks di halaman tersebut, terlepas dari lokasi asli gambar di halaman. |
nomor halaman | Jika gambar diekstrak atau dirender dari PDF, bidang ini berisi nomor halaman dalam PDF yang diekstrak atau dirender dari, mulai dari 1. Jika gambar bukan dari PDF, bidang ini adalah 0. |
Nilai sampel dari normalized_images
:
[
{
"data": "BASE64 ENCODED STRING OF A JPEG IMAGE",
"width": 500,
"height": 300,
"originalWidth": 5000,
"originalHeight": 3000,
"rotationFromOriginal": 90,
"contentOffset": 500,
"pageNumber": 2
}
]
Menentukan set keterampilan untuk pemrosesan gambar
Bagian ini melengkapi artikel referensi keterampilan dengan menyediakan konteks untuk bekerja dengan input keterampilan, output, dan pola, karena berkaitan dengan pemrosesan gambar.
- Buat atau perbarui set keterampilan untuk menambahkan keterampilan.
Setelah kerangka kerja dasar set keterampilan Anda dibuat dan layanan Azure AI dikonfigurasi, Anda dapat fokus pada setiap keterampilan gambar individu, menentukan input dan konteks sumber, dan memetakan output ke bidang baik di indeks atau penyimpanan pengetahuan.
Nota
Untuk contoh set keterampilan yang menggabungkan pemrosesan gambar dengan pemrosesan bahasa alami hilir, lihat Tutorial REST: Menggunakan REST dan AI untuk menghasilkan konten yang dapat dicari dari blob Azure. Ini menunjukkan cara memberi umpan output pencitraan keterampilan ke dalam pengenalan entitas dan ekstraksi frasa kunci.
Contoh input untuk pemrosesan gambar
Seperti disebutkan, gambar diekstrak selama pemecahan dokumen dan kemudian dinormalisasi sebagai langkah awal. Gambar yang dinormalisasi adalah input ke keterampilan pemrosesan gambar apa pun, dan selalu diwakili dalam pohon dokumen yang diperkaya dengan salah satu dari dua cara:
-
/document/normalized_images/*
adalah untuk dokumen yang diproses secara keseluruhan.
{
"@odata.type": "#Microsoft.Skills.Custom.ChatCompletionSkill",
"context": "/document/normalized_images/*",
"uri": "https://contoso.openai.azure.com/openai/deployments/contoso-gpt-4o/chat/completions?api-version=2025-01-01-preview",
"timeout": "PT1M",
"apiKey": "<YOUR-API-KEY here>"
"inputs": [
{
"name": "image",
"source": "/document/normalized_images/*/data"
},
{
"name": "systemMessage",
"source": "='You are a useful artificial intelligence assistant that helps people.'"
},
{
"name": "userMessage",
"source": "='Describe what you see in this image in 20 words or less in Spanish.'"
}
],
"outputs": [
{
"name": "response",
"targetName": "captionedImage"
}
]
},
Contoh menggunakan respons skema json dengan input teks
Contoh ini menggambarkan bagaimana Anda dapat menggunakan output terstruktur untuk model bahasa. Perhatikan bahwa kemampuan ini terutama didukung sebagian besar oleh model bahasa OpenAI, meskipun itu dapat berubah di masa depan.
{
"@odata.type": "#Microsoft.Skills.Custom.ChatCompletionSkill",
"context": "/document/content",
"uri": "https://contoso.openai.azure.com/openai/deployments/contoso-gpt-4o/chat/completions?api-version=2025-01-01-preview",
"timeout": "PT1M",
"apiKey": "<YOUR-API-KEY here>"
"inputs": [
{
"name": "systemMessage",
"source": "='You are a useful artificial intelligence assistant that helps people.'"
},
{
"name": "userMessage",
"source": "='How many languages are there in the world and what are they?'"
}
],
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "structured_output",
"strict": true,
"schema": {
"type": "object",
"properties": {
"total": { "type": "number" },
"languages": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": ["total", "languages"],
"additionalProperties": false
}
},
"outputs": [
{
"name": "response",
"targetName": "responseJsonForLanguages"
}
]
},
Memetakan output ke bidang pencarian
Teks output direpresentasikan sebagai simpul di pohon dokumen internal yang diperkaya, dan setiap simpul harus dipetakan ke bidang dalam indeks pencarian, atau ke proyeksi di penyimpanan pengetahuan, untuk membuat konten tersedia di aplikasi Anda.
Buat atau perbarui indeks pencarian untuk menambahkan bidang untuk menerima output keterampilan.
Dalam contoh kumpulan bidang berikut, konten adalah konten blob. Metadata_storage_name berisi nama file (diatur
retrievable
ke true). Metadata_storage_path adalah jalur unik blob dan merupakan kunci dokumen default. Merged_content adalah output dari Gabungan Teks (berguna saat gambar disematkan).captionedImage merupakan keluaran keterampilan dan harus berupa tipe string agar dapat menangkap semua keluaran model bahasa dalam indeks pencarian.
"fields": [ { "name": "content", "type": "Edm.String", "filterable": false, "retrievable": true, "searchable": true, "sortable": false }, { "name": "metadata_storage_name", "type": "Edm.String", "filterable": true, "retrievable": true, "searchable": true, "sortable": false }, { "name": "metadata_storage_path", "type": "Edm.String", "filterable": false, "key": true, "retrievable": true, "searchable": false, "sortable": false }, { "name": "captioned_image", "type": "Edm.String", "filterable": false, "retrievable": true, "searchable": true, "sortable": false } ]
Perbarui pengindeks untuk memetakan output skillset (simpul di pohon pengayaan) ke bidang indeks.
Dokumen yang diperkaya bersifat internal. Untuk eksternalisasi simpul dalam pohon dokumen yang diperkaya, siapkan pemetaan bidang output yang menentukan bidang indeks mana yang menerima konten simpul. Data yang diperkaya diakses oleh aplikasi Anda melalui bidang indeks. Contoh berikut menunjukkan simpul teks (output OCR) dalam dokumen yang diperkaya yang dipetakan ke bidang teks dalam indeks pencarian.
"outputFieldMappings": [ { "sourceFieldName": "/document/normalized_images/*/captionedImage", "targetFieldName": "captioned_image" } ]
Jalankan pengindeks untuk memanggil pengambilan dokumen sumber, pemrosesan gambar melalui keterangan model bahasa, dan pengindeksan.
Memverifikasi hasil
Jalankan kueri terhadap indeks untuk memeriksa hasil pemrosesan gambar. Gunakan Search Explorer sebagai klien pencarian, atau alat apa pun yang mengirim permintaan HTTP. Kueri berikut memilih bidang yang berisi output pemrosesan gambar.
POST /indexes/[index name]/docs/search?api-version=[api-version]
{
"search": "A cat in a picture",
"select": "metadata_storage_name, captioned_image"
}