Model mengeluarkan bidang tambahan. Haruskah ditampilkan secara langsung atau ditolak? Kita lihat dulu apakah ada kesepakatannya
Ada tambahan `confidence` pada hasil ekstraksi. Bagian depannya terlihat sangat berguna, sehingga langsung ditampilkan sebagai "kredibilitas". Masalahnya adalah bidang ini mungkin tidak ditentukan atau dikalibrasi. Bidang tambahan ini belum tentu tidak berbahaya: hal ini memungkinkan pengguna hilir untuk mengandalkan nilai-nilai yang tidak disepakati.
Model mengembalikan satu bidang lagi dalam hasil ekstraksi terstruktur, dan ujung depan dapat dengan mudah menampilkannya secara langsung sebagai informasi berguna. Misalnya, jika ada tambahan confidence pada hasil ekstraksi, maka akan ditampilkan sebagai "kredibilitas" di halaman. Masalahnya adalah bidang ini mungkin tidak ditentukan atau dikalibrasi. Bidang tambahan belum tentu tidak berbahaya, dan mungkin memungkinkan pengguna hilir menggunakan nilai yang tidak disepakati sebagai dasar penilaian.
Artikel ini cocok untuk pelajar yang bertanggung jawab atas desain antarmuka, docking front-end dan back-end, atau proses pemrosesan dokumen. Berikut ini penjelasan cara menentukan terlebih dahulu apakah antarmuka terbuka atau tertutup, cara mengubah bidang yang tidak diketahui menjadi kesalahan yang dapat diamati, dan informasi apa yang harus dikembalikan setelah penolakan. Setelah membacanya, Anda dapat memutuskan apakah kolom tambahan harus ditolak, diabaikan, atau disertakan dalam versi baru.
Artikel ini menggunakan sampel sintetis untuk mendemonstrasikan metode pemrosesan. Kode telah diperiksa dengan contoh di lingkungan yang terisolasi dan bukan merupakan jaminan atas semua file nyata atau kinerja produk. Sebelum memproses dokumen penting, harap simpan dokumen asli dan tinjau sesuai dengan batasan dan item penerimaan dalam teks.
Bisakah beberapa bidang model ditampilkan secara langsung? Kesimpulan satu kalimat
Setujui kontraknya terlebih dahulu, lalu putuskan apakah akan menerima atau menolaknya: kolom yang tidak ditentukan dan dikalibrasi tidak boleh langsung ditampilkan sebagai bukti yang kredibel.
| situasi Anda | Praktik yang direkomendasikan | alasan |
|---|---|---|
| Alat eksplorasi internal | Bidang ekstensi dapat diizinkan | Prioritaskan fleksibilitas selama fase eksplorasi |
| Antarmuka pengiriman yang stabil | Tutup setiap layer dengan additionalProperties: false | Tolak atribut yang tidak ditentukan untuk menghindari kesalahan pembacaan hilir |
| Bidang hukum baru muncul | Publikasikan skema versi baru | Jangan diam-diam mengendurkan versi lama |
| Pilih untuk mengabaikan bidang yang berlebihan | Catat hasil asli dan perilaku pemfilteran | Akan lebih mudah untuk membedakan apakah data sumber tidak memiliki bidang ini atau apakah lapisan antarmuka telah menghapusnya. |
Pertama-tama putuskan apakah antarmuka terbuka atau tertutup
Alat eksplorasi internal memungkinkan perluasan bidang, dan antarmuka pengiriman yang stabil sering kali memerlukan batasan yang lebih ketat. Ketika properti tambahan Skema JSON diatur ke false, atribut yang tidak ditentukan dari objek saat ini dapat ditolak, tetapi setiap objek yang disarangkan tidak akan secara otomatis ditimpa secara rekursif. Apa yang diperbolehkan pada setiap level harus ditulis dengan jelas.
Ini tidak berarti bahwa semua antarmuka harus menolak semua ekstensi. Kuncinya adalah memperjelas pilihan dan membiarkan mekanisme pembuatan versi terbuka untuk peningkatan. Mengabaikan kolom dengan nama yang sama secara diam-diam saat ini dan tiba-tiba menggunakannya besok dapat dengan mudah menyebabkan interpretasi data historis yang berbeda.
Ubah bidang yang tidak diketahui menjadi kesalahan yang dapat diamati
from jsonschema import Draft202012Validator
schema = {"type": "object", "required": ["name", "evidence"],
"properties": {"name": {"type": "string"},
"evidence": {"type": "object", "required": ["page"],
"properties": {"page": {"type": "integer", "minimum": 1}},
"additionalProperties": False}},
"additionalProperties": False}
validator = Draft202012Validator(schema)
valid = lambda x: not list(validator.iter_errors(x))
assert valid({"name": "Demo", "evidence": {"page": 1}})
assert not valid({"name": "Demo", "confidence": 0.99, "evidence": {"page": 1}})
assert not valid({"name": "Demo", "evidence": {"page": 1, "guess": True}})
Nilai numerik 0.99 dalam contoh hanyalah masukan sintetik yang harus ditolak, bukan hasil kualitas sebenarnya untuk model apa pun. Contoh ini memeriksa lapisan tingkat atas dan lapisan bersarang pada saat yang sama untuk mencegah kelalaian yang hanya menutup lapisan luar dan memungkinkan lapisan dalam meluas secara sewenang-wenang.
Berikan informasi yang dapat diperbaiki setelah penolakan
| Kondisi | Informasi pengembalian harus mencakup: | Jangan lakukan apa-apa |
|---|---|---|
| Multi-bidang tingkat atas | Nama kunci dan versi protokol tidak diketahui | Tampilkan secara otomatis sebagai indikator terpercaya |
| Multi-bidang lapisan dalam | Jalur objek, nama kunci tidak diketahui | Hanya satu kesalahan JSON yang dikembalikan |
| Versi baru secara hukum diperluas | Skema baru yang jelas | Diam-diam longgarkan versi lama |
| Model ini berulang kali mengeluarkan kunci yang redundan | Ekstrak alasan kegagalan misi | Setelah setiap penghapusan, ia berpura-pura output asli sudah memenuhi syarat |
📊 Perbandingan Inti: Antarmuka Terbuka vs. Antarmuka Tertutup
| Dimensi | Antarmuka terbuka | Antarmuka tertutup |
|---|---|---|
| Skenario yang berlaku | Alat eksplorasi internal | Antarmuka pengiriman yang stabil |
| Penanganan bidang redundan | Izinkan ekstensi | Tolak atribut yang tidak terdefinisi |
| Risiko besar | Nilai yang tidak disepakati digunakan sebagai dasar | Jika model kadang-kadang mengeluarkan beberapa output, tugas gagal dan perlu diperiksa |
| Metode peningkatan | Langsung lanjutkan penggunaan | Ekstensi eksplisit melalui versi skema baru |
Membuang bidang juga merupakan keputusan pemrosesan data
Jika memang digunakan "baca bidang yang diketahui, abaikan bidang lain", hasil asli dan perilaku penyaringan harus dicatat. Selain itu, sulit untuk mengetahui apakah data sumber awalnya tidak memiliki item atau apakah lapisan antarmuka menghapusnya. Pembuangan lapangan juga tidak boleh digunakan untuk menutupi ketidakpatuhan model terhadap protokol.
Tinggalkan batas antara terjemahan dan ekstraksi
Output terjemahan dokumen dan output lapangan terstruktur adalah dua kontrak yang berbeda. Saat menggunakan OmniDoc untuk memproses dokumen, Anda dapat menggunakan daftar bidang untuk verifikasi pasca-terjemahan, tetapi Anda tidak dapat secara otomatis menerima bidang penilaian bisnis atau kepercayaan tambahan hanya karena terjemahan berjalan lancar.
🎯 Metode mana yang cocok untukmu?
Jika Anda sedang mengembangkan alat eksplorasi internal
Field dapat diperluas, tetapi sebelum ditampilkan, mereka harus tetap ditandai sebagai belum terdefinisi.
Jika Anda menjaga antarmuka pengiriman yang stabil
Gunakan additionalProperties: false untuk menutup setiap layer dan menentukan batas untuk objek bersarang secara terpisah.
Jika Anda ingin memperkenalkan bidang baru
Saat merilis versi baru dari skema, jangan diam-diam melonggarkan versi lama.
Jika proses Anda perlu membuang kolom yang berulang,
Catat hasil asli dan perilaku penyaringan untuk memudahkan pelacakan nanti.
❓ Pertanyaan yang Sering Diajukan (FAQ)
1. Apakah additionalProperties: false bisa mencakup semua level?
Tidak dapat diganti secara otomatis. Ia hanya menolak properti yang tidak didefinisikan oleh objek saat ini; setiap objek bersarang perlu dinyatakan dengan jelas untuk apa yang diperbolehkan.
2. Apakah medan multi-output memang berbahaya?
Tidak selalu, tetapi hal ini dapat menyebabkan nilai yang tidak disepakati di hilir diperlakukan sebagai dasar, sehingga definisi dan keadaan kalibrasinya harus dikonfirmasi terlebih dahulu.
3. Apa yang harus dikembalikan saat menolak field yang redundan?
Harus mencakup nama kunci yang tidak diketahui, jalur objek (saat berada di lapisan dalam), dan versi protokol, bukan hanya satu kesalahan JSON.
4. Bisakah kita abaikan saja kolom ekstra?
Ya, tetapi hasil mentah dan perilaku penyaringan harus dicatat, dan model harus menghindari menggunakannya untuk menutupi ketidakpatuhan protokol.
📝 Ringkasan
Kolom ekstra tidak bisa ditampilkan hanya karena terlihat berguna; pertama-tama sepakati batas antarmuka, lalu putuskan apakah akan menerima, menolak, atau meningkatkan versi tersebut. Memperjelas aturan di setiap lapisan sangat penting untuk menjaga data historis tetap konsisten dengan interpretasi selanjutnya.
Rasakan sekarang: Unggah dokumen Anda untuk mulai menerjemahkan, mempertahankan format asli


