Bosanska lokalizacija Odoo platforme: AI OCR obrada bankovnih PDF izvoda za Privredna banka, Procredit, Raiffeisen i Sparkasse bank
Uvod
U pripremi je migracija našeg klijenta sa naše legacy aplikacije “F18” na Odoo. To se radi u sklopu “Odoo” projekta koji traje dvije godine. Plan koji smo u ljeto usaglasili je bio da se u 2026 izvrši djelimična migracija na Odoo, a da finansije ostanu na “F18”. Nakon ostvarenog progresa, otvorila se opcija proširenja projekta: potpuna migracija na “Odoo”.
Knjiženje izvoda u Odoo vs F18
Knjiženje izvoda u “F18” se vrši ručno. Stavi se pred sebe izvod i prekuca. “F18” je efikasan alat za takvu operaciju. Međutim, “Odoo” nije tako dizajniran. U svojoj osnovnoj formi, predviđeno je da se bankovni izvodi u “Odoo” uvoze putem fajlova (out-of-box import XLSX dokumenata). Žurnali tipa “Banke” uopšte nemaju interfejs za direktno knjiženje1.
UniCredit XML import izvoda
Mi smo čitavu godinu radili import BBI bankovnih izvoda tako što smo kreirali XLSX dokumente. I to je bilo sasvim ok, dok nisam uveo u modul l10n_ba_bank_unicredit import XML izvoda. Način obrade izvoda koji sam radio sa BBI je preko noći postao primitivna i “zahmetli” operacija.
Bosanski inžinjeri, pomagajte!
Prije nekoliko dana sam pitao sam poslao link na naš članak o UniCredit modulu sa automatskim importom podataka bosanskoj firmi koja pokriva dosta banaka koje djeluju u Bosni i Hercegovini. Pitao sam ih preko “linkedin”-a da li postoji mogućnost da u nekom struktuiranom formatu korisnici pored PDF izvoda dobijaju emailove kako to imam mogućnost sa UniCredit. Naravno, prefereirani format bi bio XML pa bi mogli “pođoniti” postojeći UniCredit modul. Međutim, pomnožili su me sa nulom. Nisu se udostojili ni reći: “Ne možemo ti pomoći”.
AI PDF OCR varijanta
Kada sam skontao da je bilo kakvo dogovaranje sa bankama i ljudima koji su “u šemi” sa bankama jalova rabota, odlučio sam da vidim može li se nešto uraditi sa onim što imam. A to što imam je set PDF-ova koji su predviđeni za sve osim za ovo što meni treba. Kada sam ih počeo detaljnije gledati, oni nisu predviđeni ni za efikasno ručno knjiženje u F182.
l10n_ba_bank_pdf - bazni modul
Ovo je bazni modul koji svi drugi PDF moduli koriste3. Tok obrade je sljedeći:
- Kao kod UniCredit XML podesiš email adresu za procesiranje izvoda
- Na tu adresu pošalješ email sa PDF dokumentom
- Odoo
cronposlovima procesira te mailove - U slučaju greške bankovni izvod sa nula stavki i PDF-om će se generisati i čekati ručnu intervenciju4
- Kada PDF dođe na obradu, AI OCR generiše JSON bankovnog izvoda
- Post-procesne radnje po potrebi “čiste” JSON, primjenjuju šeme kontiranja koji je dio standardnog “Odoo” zatvaranja otvorenih stavki
- Ako je procesiranje uspješno, korisnika obrađen ujutro čeka izvod
Pošto naš klijent posluje sa:
- Privredna banka Sarajevo
- Procredit
- Raiffeisen
- Sparkasse
realizovali smo ova četiri procesora.
l10n_ba_bank_pdf_pbs - Privredna banka Sarajevo
Ovu banku smo prvu uzeli zato što imamo najmanje reprezentativan uzorak (samo jednu stavku):

AI JSON generisan iz PDF-a:

Bankovni izvod u Odoo:

Finansijski nalog:

l10n_ba_bank_pdf_procredit - Procredit banka
Procredit banka PDF ima format koji je za ovo procesiranje neprilagođen:
- Slika u koloru koja značajno povećava veličinu PDF-a
- Provizije su kolona koja se nalaze pored uplate/isplate što je AI-u trebalo posebno objasniti
- Dokument nema uopšte broja. Na kraju sam instruirao AI da broj napravi na osnovu “datuma do”

Bankovni izvod u Odoo:

AI JSON:

l10n_ba_bank_pdf_raiffeisen - Raiffeisen banka
Ovaj PDF je najinžinjerskiji. Čist i pregledan. AI ga je svario “dok si rek’o keks”. Hvala Raiffeisen inžinjeri. Primjera radi, uzorak Raiffeisen od cca 70 stavki je 99 KB, a ovaj Procredit od 8 stavki 280 KB.
Ovo nam je dodatno bitno, s obzirom da je na ovoj banci najveći promet. Procesiranje 70 stavki traje cca 300 sekundi sa QWEN2.5-VL, dok sa QWEN3-VL 200 sec.



Raiffeisen banka u Odoo:

AI JSON:

Vrijeme procesiranja:

l10n_ba_bank_pdf_sparkasse - Sparkasse bank
Ova banka me je do boli namučila. Na njoj sam ostavio čitav današnji dan. Kako su grozno sklepali ovaj PDF. Kada se bolje pogleda, on je i čovjeku pravo nečitljiv. Kojem “genijalcu” je samo palo na pamet da lupa ove sleševe bezvezne i da spaja brojeve transakcijskog računa sa nazivom klijenta.
Znači GROZNO! Interesantno, ono što je meni kao čovjeku bilo grozno - bilo je nerazumljivo i AI LLM-ovima.
Čitav dan sam mjenjao promptove da bi AI skontao šta je šta. Najveću konfuziju je izazivala kolona “Opis”.
Prvu uspješnu detekciju napravio sam sa Anthropic Sonnet 3.5v2 modelom. Ali taj model je kao đavo skup u odnosu na QWEN.
Onda sam “điđao” prompt da bi sa QWEN3-VL došao do uspješne obrade.


Primjer greške u procesiranju:

AI JSON:

Sparkasse banka u Odoo:

Postavke
Postavke AI
Podešenje na nivou korisnika:

Mogućnost posebnog podešenja za žurnal:

Podešenje pravila kontiranja
Ovo pravilo za primjer Sparkasse banke podešava kontiranje bankovnih garancija:



Dashboard svih banaka:

Reference
Git repozitoriji - moduli

Openrouter.ai stanje kredita
Anthropic Sonnet je najbolje procesirao. Međutim, cijena njegovog korištenja je velika. Na kraju je QWEN3-VL uz odgovarajuće podešenje promptova dao identične rezultate:

Zaključak
Ovo je bio fakat “luđački poduhvat”. Procesiranje nestruktuiranog sadržaja je zadnja opcija na koju se treba ići. Nepotrebno.
Elementarna inžinjerska logika kaže da je kreatorima bankovnih aplikacija “pet minuta posla” dodati opciju slanja na email u .xml, .dat5 ili bar u garibskom .csv pored postojećeg PDF formata6.
Od banaka koje sam radio, očekujem da će Raiffeisen banka imati ovo što sam one nafurane likove pitao pa me otkantali. Međutim, za istraživanje toga jednostavno nemam vremena, niti bi mi suštinski pomoglo da sam Raiffeisen riješio sa obradom struktuiranog dokumenta, a da ove druge banke problem ostane nerješen. Na ovaj način sam na zadovoljavajući način riješio problem.
Ernad Husremović bring.out doo Sarajevo hernad@bring.out.ba
Footnotes
-
Naravno nije nikakav problem da se korisniku “otvori” taj direktni pristup, ali je tekuća postavka unos bankovnog izvoda na osnovu koga se formiraju finansijski nalozi. ↩
-
Izuzetak su Raiffeisen izvodi. Njih je formatirao pravi inžinjer. ↩
-
On je opet ovistan o našem starom modulu za OCR čitanje računa - koristi AI OCR logiku. ↩
-
Uobičajeni scenario je pokrenuti “Reprocessing” dugme koje će manuelnog aktivirati AI OCR procesiranje. ↩
-
Vidio sam da Raiffeisen ima taj format po nekom svjetskom finansijskom standardu, sjećam se toga kad sam prije mjesec dana vršio odabir banke. ↩
-
S obzirom da u svojim Web aplikacijama već imaju eksport u te struktuirane formate. ↩