Situatie
Departamentele de contabilitate și HR pierd zeci de ore lunar introducând manual date din sute de PDF-uri scanate (facturi, CV-uri, contracte) în sistemul ERP al companiei (proces de Data Entry). Soluțiile externe (SaaS/API) au un cost ridicat per document procesat și ridică probleme de confidențialitate și GDPR, deoarece presupun trimiterea datelor financiare în afara rețelei interne.
Soluția propune utilizarea unui model multimodal local (VLM – Vision Large Language Model) care să extragă aceste date offline și să le returneze într-un format structurat, gata de import.
Backup
Se va crea un folder izolat (/test_docs) conținând copii ale unor facturi anterioare. Scriptul va rula inițial doar pe acest folder pentru a calibra promptul și a măsura acuratețea extracției (Proof of Concept), fără a scrie date în ERP.
Solutie
Pasi de urmat
Pregătirea infrastructurii locale de inferență (Ollama) Pentru a rula modelul de Vision local și a expune un API intern, vom folosi framework-ul Ollama.
-
Pe serverul de procesare (sau pe o mașină cu GPU/VRAM suficient), se instalează Ollama.
-
Se descarcă modelul multimodal dorit (ex. Llama 3.2 Vision cuantizat pentru eficiență):
ollama run llama3.2-vision -
Ollama va expune automat un API REST local pe portul
11434.
Modelele Vision lucrează cu imagini. Se creează un script Python care monitorizează un folder de rețea.
-
Se instalează dependențele necesare:
pip install pdf2image requests. -
Când un PDF nou (ex.
factura.pdf) este adăugat în folder, scriptul foloseștepdf2imagepentru a converti prima pagină într-un fișierJPEGla rezoluție optimă (200-300 DPI), astfel încât textul să fie clar pentru AI.
Imaginea este encodată în Base64 și trimisă către API-ul local Ollama împreună cu un System Prompt strict.
-
Se configurează cererea HTTP (sau se folosește biblioteca
litellm/ollama-python) setând formatul de ieșire forțat pe JSON. -
Exemplu Prompt: “Ești un asistent de extragere date. Analizează imaginea facturii. Extrage următoarele informații: ‘Nume Furnizor’, ‘CUI’, ‘Data Facturii’, ‘Total de Plată’. Returnează rezultatul EXCLUSIV ca un obiect JSON valid, fără niciun alt text explicativ”.
Răspunsul JSON returnat de model este preluat de script.
-
Se folosește o bibliotecă de validare (precum
Pydanticîn Python) pentru a garanta că, de exemplu, “Total de Plată” este un număr (float), iar “Data Facturii” respectă un format standard (YYYY-MM-DD). -
Dacă datele sunt valide, scriptul le inserează direct în baza de date a ERP-ului sau le salvează într-un
.csvcurat pentru preluare automată. Documentele cu date lipsă sunt mutate într-un folder de “Revizuire Umană”.
Leave A Comment?