Számlák felismerése és szövegkinyerés – rendszerleírás
A közös felismerő folyamat lépései, a csoportos sorba állítás, a két háttérfeladat (felismerés, PDF-szöveg) és a szöveg-végpontok jogai.
A számla-felismerés egyetlen közös belépési ponton fut (felismerő library run()), egy dokumentumra kézzel vagy sok dokumentumra háttérfeladatként. Új számla kizárólag a pénzügyi modul addInvoice() metódusán keresztül születik.
Adatmodell
A táblanevek a telepítés saját előtagjával állnak az adatbázisban.
| Tábla | Szerep |
|---|---|
doc | recog_status, recog_note, content_text, text_status |
doc_link | dokumentum ↔ számla kapcsolat (invoice_image típus) |
invoice | a felismert számla (tételekkel, a pénzügyi modellen át) |
company | partner-adat pótlás |
cron_queue | doc_recognise, doc_text jobok |
A felismerés lépései
- Hatókör-ellenőrzés; azonos fájl korábbi példányainak összevonása.
- Ha már van kapcsolt számla, nem készül új (technikai vevőnél csak vevő-csere, kapcsolt számlán kiegészítés).
- Szöveg: szövegréteg → helyi OCR → szükség esetén fizetős nyelvi modell; díjbekérő felismerése (nem lesz számla); számla-e előszűrés.
- Kiolvasás; ha hiánytalan (
verified): meglévő számla párosítása vagy új számlafinance/invoice::addInvoice()-szal,doc_link+invoice_imagetípus, partner-adat pótlás, tükörszámlák szinkronja. - Eredmény: strukturált válasz (státusz, doc_id, invoice_id, változások), napló,
setRecogResulta dokumentumon.
Háttérfeladatok
bulkrecognise: max. 2000 dokumentum; a nem létező, kukás vagy hatókörön kívüli kimarad (naplózva); cégenként felismerési sor (queueRecognition) és egydoc_recognisejob adoc_idslistával.doc_recognise(egyszeri, cégenként): 25-ös kötegekben, időkerettel a közösrun()korlátozott rendszer-kontextusban (csak a job cégének dokumentumai, törlés nélkül,classifyelőszűrővel); siker a rendszernaplóba, hiba a hibanaplóba; csoportos futás végén értesítés.doc_text(egyszeri, dokumentumonként; a feltöltés sorolja be): a PDF-et local útról vagy Drive-ról letölti, PDF-parserrel kinyeri,content_text-be menti;text_status1 = kinyerve, 2 = nincs kinyerhető szöveg; az átmeneti fájl törlődik.
Szöveg-végpontok
extracttext: egy vagy több dokumentum (a kliens kötegekben küldi);textOf()→saveExtractedText(); darabszámokcountsformában.textcontent: a tárolt szöveg; JSON-kódolási hibánál beszédes üzenet; jog nélkül a jelvény csak címke.
Jogosultság
recogniseinvoice(UNMAPPED) + coremodify; csoportosancanBulkAction(recogniseinvoice).- A library a hívótól kapja: hatókör-cégek,
documentdelete,finance/invoicerepointésstatusdelete(újraépítés),company/companyedit. textextract(nincs a katalógusban), csoportosancanBulkAction(textextract);textview(BASE); hatókör dokumentumonként.- Előfeltétel: OCR- és nyelvimodell-beállítás a fizetős olvasáshoz.