v1.0.0-004 : Fix Halusinasi pada Ollama LLaVA di MCP-OCR
Menghapus jebakan teks pada prompt yang menyebabkan model lokal Ollama berhalusinasi saat membaca gambar sepotong atau tidak jelas, dan mengembalikan pipeline fallback Ollama -> Gemini.
Berdasarkan arsitektur yang sudah disepakati (ocrlocal <> mcp -> ollama:llava <buram> gemini), terjadi anomali di mana MCP-OCR menghasilkan data dummy seperti “INDOMARCO” dan “Bisnis” ketika dikirimkan gambar sepotong atau gambar yang bukan nota utuh.
Prompt sebelumnya mengandung panduan berbunyi “Pada faktur supplier besar (seperti Indomarco)…”. Hal ini menyebabkan prompt bleed, di mana model lokal (Ollama LLaVA) yang kapasitasnya kecil mengambil kata-kata contoh tersebut dan berhalusinasi membangun JSON seolah-olah gambar tersebut adalah nota dari Indomarco.
mcp-server/src/tools/ocrTool.ts:- Pembersihan Prompt: Menghapus nama entitas contoh (seperti “Indomarco”) dari instruksi.
- Aturan Kejujuran (Anti-Halusinasi): Menambahkan perintah tegas bahwa jika gambar BUKAN nota, HANYA sepotong teks, atau sangat buram, model WAJIB langsung mengembalikan
"readability_status": "TIDAK_TERBACA"dan mengosongkan field lainnya tanpa berusaha menebak. - Pipeline Dikembalikan: Mengembalikan logika pemanggilan (
try Ollama->if BURAM/TIDAK_TERBACA->fallback Gemini) sesuai kesepakatan desain arsitektur sebelumnya (tidak melakukan bypass langsung ke Gemini).
Dengan perbaikan ini, jika pengguna mengirim gambar berisi sepotong teks “Jatuh Tempo”, sistem (Ollama) diharapkan secara jujur mengembalikan status TIDAK_TERBACA sehingga aplikasi bisa memberikan peringatan (warning) yang jelas kepada pengguna (alih-alih memunculkan halusinasi panjang).