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áblaSzerep
docrecog_status, recog_note, content_text, text_status
doc_linkdokumentum ↔ számla kapcsolat (invoice_image típus)
invoicea felismert számla (tételekkel, a pénzügyi modellen át)
companypartner-adat pótlás
cron_queuedoc_recognise, doc_text jobok

A felismerés lépései

  1. Hatókör-ellenőrzés; azonos fájl korábbi példányainak összevonása.
  2. 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).
  3. 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.
  4. Kiolvasás; ha hiánytalan (verified): meglévő számla párosítása vagy új számla finance/invoice::addInvoice()-szal, doc_link + invoice_image típus, partner-adat pótlás, tükörszámlák szinkronja.
  5. Eredmény: strukturált válasz (státusz, doc_id, invoice_id, változások), napló, setRecogResult a 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 egy doc_recognise job a doc_ids listával.
  • doc_recognise (egyszeri, cégenként): 25-ös kötegekben, időkerettel a közös run() korlátozott rendszer-kontextusban (csak a job cégének dokumentumai, törlés nélkül, classify elő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_status 1 = 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ámok counts formá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) + core modify; csoportosan canBulkAction(recogniseinvoice).
  • A library a hívótól kapja: hatókör-cégek, document delete, finance/invoice repoint és statusdelete (újraépítés), company/company edit.
  • textextract (nincs a katalógusban), csoportosan canBulkAction(textextract); textview (BASE); hatókör dokumentumonként.
  • Előfeltétel: OCR- és nyelvimodell-beállítás a fizetős olvasáshoz.