AI OCR extrakcia údajov z faktúr pomocou jednoduchého Python skriptu

Naučte sa, ako automatizovať extrakciu údajov z faktúr pomocou AI OCR a Pythonu s FlowHunt API, čo umožňuje rýchle, presné a škálovateľné spracovanie dokumentov.

AI OCR extrakcia údajov z faktúr pomocou jednoduchého Python skriptu

Čo je AI OCR?

AI poháňané OCR ide nad rámec tradičného OCR, pretože využíva umelú inteligenciu na pochopenie kontextu, zvládnutie rôznych rozložení a extrakciu kvalitných štruktúrovaných dát aj z najkomplexnejších dokumentov. Zatiaľ čo tradičné OCR je určené na extrakciu textu z pevného formátu, AI OCR zvláda rôzne typy rozložení a konfigurácií bežných vo faktúrach a iných firemných dokumentoch.

Kľúčové vlastnosti AI OCR

  • Kontextové porozumenie: AI OCR využíva NLP na pochopenie kontextu v dokumentoch. Identifikuje polia ako „Celková suma“, „Dátum faktúry“ a „Názov klienta“, aj keď sa tieto polia nachádzajú na rôznych miestach.
  • Flexibilita: Tradičné OCR má problém s nepravidelnými rozloženiami; AI OCR je flexibilné a vie extrahovať informácie z rôznych formátov faktúr bez problémov.
  • Štruktúrovanie dát: AI OCR často poskytuje priamo štruktúrované výstupy, ktoré sú pre následné spracovanie jednoduchšie než surový text z tradičného OCR.

Prečo používať AI OCR pre faktúry?

Faktúry je potrebné spracovať efektívne a s vysokou presnosťou, či už v účtovníctve, logistike alebo nákupe. AI OCR automatizuje extrakciu dát a zjednodušuje procesy, čím zvyšuje presnosť údajov.

Výhody AI OCR pre faktúry

  • Rýchlosť a efektivita: S AI OCR je možné spracovať veľké množstvo faktúr v krátkom čase a uvoľniť tak kapacity zamestnancov.
  • Vyššia presnosť: AI modely trénované na rôznych typoch dokumentov znižujú chybovosť oproti manuálnemu zadávaniu dát.
  • Jednoduchšia správa dát: Keďže údaje sú už štruktúrované, ľahko sa integrujú do databáz, analytických a ERP systémov.
  • Škálovateľnosť: AI OCR zvládne vysoké objemy dokumentov bez nutnosti zvyšovať počet pracovníkov, čo je ideálne pre veľké alebo rýchlo rastúce organizácie.

ROI používania AI OCR nástroja od FlowHunt

Väčšina tradičných firiem extrahuje údaje z faktúr manuálne prostredníctvom zamestnancov. Je to časovo náročný a nákladný proces, ktorý je možné automatizovať v rôznych oblastiach ako sú daňové, právne či finančné spoločnosti.

Tento proces trvá 5 až 15 sekúnd a stojí 0,01 – 0,02 kreditu, pričom bežne by ste za tú istú prácu museli zaplatiť zamestnancovi 15 – 30 dolárov na hodinu.

OCR Cost Comparison
ProcesorNáklady za rokPočet spracovaných faktúr za rokNáklady na 1 faktúru
Človek$30,00012,000$2.50
FlowHunt$16212,000$0.013
FlowHunt (pri $30,000)$30,0002,250,000$0.0133

Myslím, že FlowHunt je oveľa efektívnejší.

Výzvy pri implementácii OCR

Aj keď je OCR veľmi užitočné, prináša so sebou aj niektoré výzvy:

  1. Kvalita obrázka: Presnosť OCR významne závisí od kvality obrázka. Rozmazané alebo nízkokvalitné obrázky prinášajú horšie výsledky.
  2. Komplexné rozloženie: Dokumenty so zložitým rozložením, zmiešanými fontami či tabuľkami môžu vyžadovať pokročilé OCR spracovanie.
  3. Jazyk a znakovosť: OCR softvér môže mať obmedzenú jazykovú podporu, pre nelatinské znaky sú potrebné špeciálne modely.
  4. Chybovosť: Žiadny OCR softvér nie je 100% presný, najmä pri rukopise alebo nepravidelných fontoch, čo môže viesť k chybám vo výstupe.

Na zvládnutie týchto výziev je dôležité používať výkonný a flexibilný OCR nástroj. API FlowHunt poskytuje robustné OCR riešenie pripravené na komplexné štruktúry dokumentov, čo ho robí ideálnym pre veľké OCR projekty.

Príprava Python OCR skriptu

Na automatizáciu procesu si nainštalujte tieto Python knižnice:

pip install requests pdf2image git+https://github.com/QualityUnit/flowhunt-python-sdk.git

Týmto nainštalujete:

  • requests: Na odosielanie HTTP požiadaviek do FlowHunt API a sťahovanie OCR výstupov.
  • pdf2image: Na prevod strán PDF na obrázky.
  • flowhunt: Python SDK FlowHunt, ktorý zjednodušuje prácu s OCR API.

Postupné rozdelenie kódu

Tento kód vezme PDF, prevedie ho na obrázky, každý obrázok odošle do FlowHunt na OCR spracovanie a uloží výstup vo formáte CSV.

Import knižníc

import json
import os
import re
import time
import requests
import flowhunt
from flowhunt.rest import ApiException
from pprint import pprint
from pdf2image import convert_from_path
  • json, os, re a time pomáhajú so spracovaním JSON, správou súborov, regulárnymi výrazmi a časovaním.
  • requests: Na obsluhu HTTP požiadaviek, napríklad na stiahnutie OCR výsledkov.
  • flowhunt: SDK FlowHunt sa stará o autentifikáciu a komunikáciu s OCR API.
  • pdf2image: Prevedie stránky PDF na obrázky, čo umožní OCR pre každú stránku samostatne.

Funkcia na prevod PDF strán na obrázky

def convert_pdf_to_image(path: str) -> None:
    """
    Prevedie PDF súbor na obrázky, uloží každú stranu ako JPEG.
    """
    images = convert_from_path(path)
    for i in range(len(images)):
        images[i].save('data/images/' + 'page' + str(i) + '.jpg', 'JPEG')
  • convert_from_path: Konvertuje každú stránku PDF na obrázok.
  • images[i].save: Uloží každú stránku ako samostatný JPEG pre OCR spracovanie.

Extrakcia URL prílohy s výstupom

def extract_attachment_url(data_string):
    pattern = r'```flowhunt\n({.*})\n```'
    match = re.search(pattern, data_string, re.DOTALL)
    if match:
        json_string = match.group(1)
        try:
            json_data = json.loads(json_string)
            return json_data.get('download_link', None)
        except json.JSONDecodeError:
            print("Error: Failed to decode JSON.")
            return None
    return None
  • Funkcia získa URL na stiahnutie OCR výstupu.
  • Používa regex na nájdenie JSON objektu s odkazom na stiahnutie.

Nastavenie API a autentifikácie

convert_pdf_to_image("data/test.pdf")
FLOW_ID = "<FLOW_ID_HERE>"

configuration = flowhunt.Configuration(
    host="https://api.flowhunt.io",
    api_key={"APIKeyHeader": "<API_KEY_HERE>"}
)
  • Prevedie PDF na obrázky.
  • Nastaví prístup k API pomocou FlowHunt prihlasovacích údajov.

Inicializácia API klienta

with flowhunt.ApiClient(configuration) as api_client:
    auth_api = flowhunt.AuthApi(api_client)
    api_response = auth_api.get_user()
    workspace_id = api_response.api_key_workspace_id
  • Overí prihlásenie a získa workspace_id pre ďalšie API volania.

Spustenie session pre Flow

flows_api = flowhunt.FlowsApi(api_client)
from_flow_create_session_req = flowhunt.FlowSessionCreateFromFlowRequest(flow_id=FLOW_ID)
create_session_rsp = flows_api.create_flow_session(workspace_id, from_flow_create_session_req)
  • Pripraví session na nahrávanie obrázkov a spracovanie OCR.

Nahranie obrázkov na OCR spracovanie

for image in os.listdir("data/images"):
    image_name, image_extension = os.path.splitext(image)
    with open("data/images/" + image, "rb") as file:
        try:
            flow_sess_attachment = flows_api.upload_attachments(
                create_session_rsp.session_id,
                file.read()
            )
  • Nahraje každý obrázok do session na OCR spracovanie.

Spustenie OCR spracovania a polling na výsledky

invoke_rsp = flows_api.invoke_flow_response(
    create_session_rsp.session_id, 
    flowhunt.FlowSessionInvokeRequest(message="")
)
while True:
    get_flow_rsp = flows_api.poll_flow_response(
        create_session_rsp.session_id, invoke_rsp.message_id
    )
    print("Flow response: ", get_flow_rsp)
    if get_flow_rsp.response_status == "S":
        print("done OCR")
        break
    time.sleep(3)
  • Spustí OCR spracovanie a každé 3 sekundy zisťuje stav spracovania.

Stiahnutie a uloženie OCR výstupu

attachment_url = extract_attachment_url(get_flow_rsp.final_response[0])
if attachment_url:
    response = requests.get(attachment_url)
    with open("data/results/" + image_name + ".csv", "wb") as file:
        file.write(response.content)
  • Stiahne CSV výstup a uloží ho lokálne.

Spustenie skriptu a testovanie výstupu

Na spustenie skriptu:

  1. Umiestnite svoje PDF do priečinka data/.
  2. Doplňte <FLOW_ID_HERE> a <API_KEY_HERE> svojimi prihlasovacími údajmi FlowHunt.
  3. Spustite skript pre konverziu PDF, nahratie obrázkov na OCR a stiahnutie štruktúrovaných CSV výsledkov.

Záver

Tento Python skript ponúka efektívne riešenie na škálovanie OCR procesov, ideálne pre odvetvia s vysokými nárokmi na spracovanie dokumentov. S API FlowHunt zvládnete konverziu dokumentov na CSV, zefektívnite procesy a zvýšite produktivitu.

Kompletný prehľad kódu

Kliknite SEM pre Gist verziu.

import json
import os
import re
import time
import requests
import flowhunt
from flowhunt.rest import ApiException
from pprint import pprint
from pdf2image import convert_from_path

def convert_pdf_to_image(path: str) -> None:
    """
    Convert a pdf file to an image
    :return:
    """
    images = convert_from_path(path)
    for i in range(len(images)):
        images[i].save('data/images/' + 'page'+ str(i) +'.jpg', 'JPEG')

def extract_attachment_url(data_string):
    pattern = r'```flowhunt\n({.*})\n```'
    match = re.search(pattern, data_string, re.DOTALL)
    if match:
        json_string = match.group(1)
        try:
            json_data = json.loads(json_string)
            return json_data.get('download_link', None)
        except json.JSONDecodeError:
            print("Error: Failed to decode JSON.")
            return None
    return None

convert_pdf_to_image("data/test.pdf")
FLOW_ID = "<FLOW_ID_HERE>"

configuration = flowhunt.Configuration(host = "https://api.flowhunt.io",
                                       api_key = {"APIKeyHeader": "<API_KEY_HERE>"})

with flowhunt.ApiClient(configuration) as api_client:
    auth_api = flowhunt.AuthApi(api_client)
    api_response = auth_api.get_user()
    workspace_id = api_response.api_key_workspace_id

    flows_api = flowhunt.FlowsApi(api_client)
    from_flow_create_session_req = flowhunt.FlowSessionCreateFromFlowRequest(
        flow_id=FLOW_ID
    )
    create_session_rsp = flows_api.create_flow_session(workspace_id, from_flow_create_session_req)

    for image in os.listdir("data/images"):
        image_name, image_extension = os.path.splitext(image)
        with open("data/images/" + image, "rb") as file:
            try:
                flow_sess_attachment = flows_api.upload_attachments(
                    create_session_rsp.session_id,
                    file.read()
                )
                invoke_rsp = flows_api.invoke_flow_response(create_session_rsp.session_id, flowhunt.FlowSessionInvokeRequest(
                    message="",
                ))
                while True:
                    get_flow_rsp = flows_api.poll_flow_response(create_session_rsp.session_id, invoke_rsp.message_id)
                    print("Flow response: ", get_flow_rsp)
                    if get_flow_rsp.response_status == "S":
                        print("done OCR")
                        attachment_url = extract_attachment_url(get_flow_rsp.final_response[0])
                        if attachment_url:
                            print("Attachment URL: ", attachment_url, "\n Downloading the file...")
                            response = requests.get(attachment_url)
                            with open("data/results/" + image_name + ".csv", "wb") as file:
                                file.write(response.content)
                        break
                    time.sleep(3)
            except ApiException as e:
                print("error for file ", image)
                print(e)

Najčastejšie kladené otázky

Čo je AI OCR a čím sa líši od tradičného OCR?

AI OCR využíva strojové učenie a NLP na pochopenie kontextu dokumentu, zvládnutie zložitých rozložení a extrakciu štruktúrovaných údajov z faktúr, na rozdiel od tradičného OCR, ktoré je založené na rozpoznávaní textu v pevnom formáte.

Aké sú hlavné výhody použitia AI OCR pre faktúry?

AI OCR poskytuje rýchlosť, presnosť, škálovateľnosť a štruktúrované výstupy, čím znižuje manuálnu prácu, minimalizuje chyby a umožňuje bezproblémovú integráciu s firemnými systémami.

Ako môžem implementovať automatizáciu OCR faktúr s Pythonom a FlowHunt?

Pomocou Python SDK od FlowHunt môžete konvertovať PDF na obrázky, odoslať ich do FlowHunt API na OCR a získať štruktúrované dáta vo formáte CSV, čím automatizujete celý proces extrakcie.

Aké výzvy existujú pri OCR spracovaní a ako ich FlowHunt rieši?

Bežné výzvy zahŕňajú nízku kvalitu obrázkov, zložité rozloženia dokumentov a rôzne jazyky. API FlowHunt je navrhnuté tak, aby tieto prekážky zvládalo pomocou pokročilých AI modelov a flexibilného spracovania.

Aká je návratnosť investície pri automatizácii extrakcie údajov z faktúr pomocou FlowHunt?

AI OCR od FlowHunt dokáže spracovať faktúry za sekundy za zlomok ceny ľudskej práce, čím prináša výrazné úspory a škálovateľnosť pre rastúce firmy.

Arshia je inžinierka AI workflowov v spoločnosti FlowHunt. S pozadím v informatike a vášňou pre umelú inteligenciu sa špecializuje na tvorbu efektívnych workflowov, ktoré integrujú AI nástroje do každodenných úloh, čím zvyšuje produktivitu a kreativitu.

Arshia Kahani
Arshia Kahani
Inžinierka AI workflowov

Vyskúšajte AI OCR nástroj na faktúry od FlowHunt

Automatizujte extrakciu údajov z faktúr pomocou robustného AI OCR od FlowHunt. Ušetrite čas, znížte chybovosť a zefektívnite svoje procesy konvertovaním PDF na štruktúrované dáta za pár sekúnd.

Zistiť viac