Lanjut ke konten
Samkarsa Logbook

v1.0.0-008 : Analisis Halusinasi TrOCR Lokal & Menonaktifkan Local OCR

Menganalisis secara mendalam mengapa hasil OCR Test ke-2 mengarang bebas ("Kuningan Abi Fima") dan bagaimana model TrOCR meracuni pipeline NLP Parser.

Jualan,Blonjo2mnt baca

Setelah melakukan uji coba ulang terhadap gambar yang sama, hasil parsing justru menghasilkan halusinasi yang luar biasa spesifik, yaitu: "Penjualan Kuningan Abi Fima ke Pemasok Suci (Metode Pembayaran: KASH) (Jatuh Tempo: 2022-09-23) : • Jersey Anak Kuningan Abi Fima 1 pcs @ 250 Total: 1025".

Berikut adalah penjabaran jujur dan menyeluruh mengenai apa yang sebenarnya terjadi pada sistem di setiap titik (pipeline).

Pada rilis sebelumnya, kita sepakat untuk mengubah model OCR lokal dari Donut menjadi Xenova/trocr-small-printed karena alasan memori browser. Namun, TrOCR memiliki kelemahan arsitektur: model ini dilatih murni untuk membaca potongan teks tunggal (single text line), bukan gambar dokumen penuh yang kompleks seperti nota. Saat disuapi gambar full receipt tanpa pemotongan (cropping), Transformer Decoder pada TrOCR kebingungan. Alih-alih gagal, model ini mengalami Hallucination Loop—ia memuntahkan teks fiktif yang ia hafal dari dataset pelatihannya (SROIE dataset) yang berisi banyak nama UMKM Indonesia. Dari sinilah teks “Kuningan Abi Fima” berasal.

Di dalam fungsi useOcrUpload.ts pada frontend, terdapat fungsi penilai textQualityScore. Fungsi ini dirancang untuk mendeteksi apakah OCR menghasilkan teks “sampah” atau tidak dengan menghitung rasio alfanumerik. Tragisnya, karena teks halusinasi dari TrOCR bentuknya sangat rapi, terstruktur, dan penuh huruf/angka, skornya melonjak di atas 60. Sistem mengira “Pindaian Lokal Berhasil”.

Karena skor lokal dianggap lulus, Frontend membatalkan proses upload gambar ke AI Vision Server (Backend Sajen / Gemini). Sistem menganggap tugas ekstraksi teks sudah selesai dengan sempurna.

Teks halusinasi tersebut dilempar secara otomatis ke fungsi parseTransaction (NLP Parser). Di sinilah letak kesalahpahamannya: NLP Parser sama sekali tidak berhalusinasi. Parser ini bekerja dengan sangat sempurna merombak teks input “Penjualan Kuningan Abi Fima…” menjadi objek JSON yang sangat rapi. Kegagalan JSON tersebut murni karena input teks (bahan baku) yang disuapkan sudah “beracun” sejak awal dari TrOCR.

Mengingat TrOCR sama sekali tidak kompeten untuk membaca gambar nota penuh tanpa implementasi sistem bounding-box detection (seperti YOLO/OpenCV) di browser, maka Local OCR (TrOCR) resmi dimatikan (dinonaktifkan) dari kodebase blonjo-ui.

Pada useOcrUpload.ts, kami telah memastikan fungsi runLocalOcr selalu me-return null. Ini memaksa sistem untuk selalu menggunakan jalur Fallback ke AI Vision Server (Gemini via MCP) yang terbukti jauh lebih tahan terhadap halusinasi visual.


Status: Bug ditutup. Menunggu tes pemindaian OCR selanjutnya yang murni diproses melalui AI Vision Server.