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 AndaPraktik yang direkomendasikanalasan
Alat eksplorasi internalBidang ekstensi dapat diizinkanPrioritaskan fleksibilitas selama fase eksplorasi
Antarmuka pengiriman yang stabilTutup setiap layer dengan additionalProperties: falseTolak atribut yang tidak ditentukan untuk menghindari kesalahan pembacaan hilir
Bidang hukum baru munculPublikasikan skema versi baruJangan diam-diam mengendurkan versi lama
Pilih untuk mengabaikan bidang yang berlebihanCatat hasil asli dan perilaku pemfilteranAkan 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

KondisiInformasi pengembalian harus mencakup:Jangan lakukan apa-apa
Multi-bidang tingkat atasNama kunci dan versi protokol tidak diketahuiTampilkan secara otomatis sebagai indikator terpercaya
Multi-bidang lapisan dalamJalur objek, nama kunci tidak diketahuiHanya satu kesalahan JSON yang dikembalikan
Versi baru secara hukum diperluasSkema baru yang jelasDiam-diam longgarkan versi lama
Model ini berulang kali mengeluarkan kunci yang redundanEkstrak alasan kegagalan misiSetelah setiap penghapusan, ia berpura-pura output asli sudah memenuhi syarat

📊 Perbandingan Inti: Antarmuka Terbuka vs. Antarmuka Tertutup

DimensiAntarmuka terbukaAntarmuka tertutup
Skenario yang berlakuAlat eksplorasi internalAntarmuka pengiriman yang stabil
Penanganan bidang redundanIzinkan ekstensiTolak atribut yang tidak terdefinisi
Risiko besarNilai yang tidak disepakati digunakan sebagai dasarJika model kadang-kadang mengeluarkan beberapa output, tugas gagal dan perlu diperiksa
Metode peningkatanLangsung lanjutkan penggunaanEkstensi 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

Diperbarui 2026-11-14