AI OCR extrakce dat z faktur pomocí jednoduchého Python skriptu

AI OCR extrakce dat z faktur pomocí jednoduchého Python skriptu

Naučte se automatizovat extrakci dat z faktur pomocí AI-based OCR a Pythonu s FlowHunt API, což umožňuje rychlé, přesné a škálovatelné zpracování dokumentů.

Co je AI-based OCR?

AI-driven OCR překonává možnosti tradičního OCR tím, že využívá umělou inteligenci k pochopení kontextu, zvládnutí mnoha rozvržení a produkci vysoce kvalitních strukturovaných dat i z těch nejsložitějších dokumentů. Zatímco tradiční OCR je navrženo pro získávání textu z pevných formátů, AI OCR zvládá mnoho typů rozvržení a konfigurací běžných ve fakturách a dalších firemních dokumentech.

Klíčové vlastnosti AI-based OCR

  • Kontextové porozumění: AI OCR využívá NLP k pochopení kontextu v dokumentech. Identifikuje pole jako „Celková částka“, „Datum faktury“ a „Jméno klienta“ i když se tato pole objevují na různých místech.
  • Flexibilita: Tradiční OCR si s nepravidelnými rozvrženími často neporadí; AI OCR je flexibilní a zvládne extrakci informací z různých typů fakturačních formátů bez potíží.
  • Strukturování dat: AI OCR často poskytuje přímo strukturované výstupy, které jsou pro následné zpracování jednodušší než surový text z tradičního OCR.

Proč používat AI OCR pro faktury?

Faktury je potřeba zpracovávat efektivně a s vysokou přesností, ať už jde o účetnictví, logistiku nebo nákupní oddělení. AI OCR automatizuje extrakci dat a zefektivňuje pracovní postupy, čímž zvyšuje přesnost dat.

Výhody AI OCR pro faktury

  • Rychlost a efektivita: S AI OCR lze v krátkém čase zpracovat velké množství faktur, což šetří zdroje i lidskou práci.
  • Vyšší přesnost: AI modely trénované na široké škále formátů dokumentů snižují chyby spojené s ručním zadáváním dat.
  • Plynulejší správa dat: Díky tomu, že data jsou již strukturovaná, lze je snadno integrovat do databází, analytických i ERP systémů.
  • Škálovatelnost: AI OCR zvládne vysoké objemy dokumentů bez potřeby navyšování personálu, což je ideální pro velké nebo rychle rostoucí firmy.

Návratnost investice při použití AI OCR od FlowHunt

Většina tradičních společností extrahuje data z faktur ručně prostřednictvím zaměstnanců. Je to časově náročná a nákladná činnost, kterou lze automatizovat v mnoha oblastech a firmách, jako jsou daňové, právní, finanční společnosti a další.

Tento proces trvá 5 až 15 sekund a stojí 0,01 – 0,02 kreditu, přičemž za stejnou práci byste jinak zaplatili zaměstnanci 15 až 30 dolarů za hodinu.

OCR Cost Comparison
ZpracovatelNáklady za rokZpracované faktury za rokCena za fakturu
Člověk$30,00012,000$2.50
FlowHunt$16212,000$0.013
FlowHunt (při $30,000)$30,0002,250,000$0.0133

Řekl bych, že FlowHunt je efektivnější o obrovský rozdíl.

Problémy při implementaci OCR

Ačkoliv je OCR velmi přínosné, přináší i určité výzvy:

  1. Kvalita obrázku: Přesnost OCR značně závisí na kvalitě obrázku. Rozmazané nebo nízké rozlišení vede ke špatným výsledkům.
  2. Složité formátování: Dokumenty se složitým rozvržením, smíšenými fonty nebo tabulkami mohou vyžadovat pokročilé OCR zpracování.
  3. Jazyk a znaková sada: OCR software může mít omezenou jazykovou podporu a pro nelatinské znaky jsou potřeba speciální modely.
  4. Chybovost: Žádný OCR software není 100% přesný, zvláště u psacího nebo nepravidelného písma, což může způsobit chyby ve výstupu.

K překonání těchto výzev je nezbytné používat výkonný a flexibilní OCR nástroj. API FlowHunt poskytuje robustní OCR řešení schopné zvládnout složité struktury dokumentů, což je ideální pro rozsáhlé OCR projekty.

Nastavení Python OCR skriptu

Pro automatizaci procesu je třeba nainstalovat následující Python knihovny:

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

Tím nainstalujete:

  • requests: Pro odesílání HTTP požadavků na FlowHunt API a stahování OCR výstupů.
  • pdf2image: Pro převod stránek PDF na obrázky.
  • flowhunt: Python SDK FlowHunt, které zjednodušuje komunikaci s OCR API.

Postupný rozbor kódu

Tento kód vezme PDF, převede ho na obrázky, každý obrázek odešle do FlowHunt na zpracování OCR a uloží výstup ve formátu CSV.

Import knihoven

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í se zpracováním JSON, správou souborů, regulárními výrazy a časováním.
  • requests: Slouží k obsluze HTTP požadavků, například pro stažení výsledků OCR.
  • flowhunt: SDK FlowHunt řeší autentizaci a komunikaci s OCR API.
  • pdf2image: Převádí stránky PDF na obrázky, což umožňuje OCR každé jednotlivé stránky.

Funkce pro převod stránek PDF na obrázky

def convert_pdf_to_image(path: str) -> None:
    """
    Převod PDF souboru na obrázky, každá stránka jako 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: Převede každou stránku PDF na obrázek.
  • images[i].save: Uloží každou stránku samostatně jako JPEG pro OCR zpracování.

Extrakce odkazu na výstupní přílohu

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
  • Funkce získá URL pro stažení OCR výstupu.
  • Používá regex pro nalezení JSON objektu s odkazem ke stažení.

Nastavení API a autentizace

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>"}
)
  • Převede PDF na obrázky.
  • Nastaví přístup k API pomocí FlowHunt údajů.

Inicializace 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
  • Provede autentizaci a získá workspace_id pro další API volání.

Zahájení Flow session

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)
  • Vytvoří session pro nahrání obrázků a zpracování OCR.

Nahrání obrázků pro OCR zpracování

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ázek v session pro OCR zpracování.

Vyvolání OCR zpracování a periodické dotazování na výsledek

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 zpracování a každé 3 sekundy kontroluje, zda je hotovo.

Stažení a uložení 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)
  • Stáhne CSV výstup a uloží ho lokálně.

Spuštění skriptu a testování výstupu

Pro spuštění tohoto skriptu:

  1. Umístěte svůj PDF do složky data/.
  2. Aktualizujte <FLOW_ID_HERE> a <API_KEY_HERE> svými přihlašovacími údaji k FlowHunt.
  3. Spusťte skript pro převod PDF, nahrání obrázků na OCR a stažení strukturovaných výsledků v CSV.

Závěr

Tento Python skript nabízí efektivní řešení pro škálování OCR procesů, ideální pro odvětví s vysokými nároky na zpracování dokumentů. Díky FlowHunt API zvládne převod dokumentů na CSV, zjednoduší pracovní postupy a zvýší produktivitu.

Přehled celého kódu

Klikněte ZDE pro Gist verzi.

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)

Často kladené otázky

Co je AI-based OCR a jak se liší od tradičního OCR?

AI-based OCR využívá strojové učení a NLP k pochopení kontextu dokumentu, zvládá složité rozvržení a extrahuje strukturovaná data z faktur, na rozdíl od tradičního OCR, které se spoléhá na rozpoznávání textu v pevném formátu.

Jaké jsou hlavní výhody použití AI OCR pro faktury?

AI OCR přináší rychlost, přesnost, škálovatelnost a strukturované výstupy, snižuje ruční práci, minimalizuje chyby a umožňuje bezproblémovou integraci s firemními systémy.

Jak mohu implementovat automatizaci OCR faktur pomocí Pythonu a FlowHunt?

Použitím Python SDK od FlowHunt můžete převést PDF do obrázků, odeslat je do FlowHunt API na OCR a získat strukturovaná data ve formátu CSV, čímž celý proces extrakce zautomatizujete.

Jaké výzvy existují při zpracování OCR a jak je FlowHunt řeší?

Mezi běžné výzvy patří špatná kvalita obrázků, složité rozvržení dokumentů a různé jazyky. API FlowHunt je navrženo tak, aby tyto problémy zvládlo pomocí pokročilých AI modelů a flexibilních zpracovatelských možností.

Jaká je návratnost investice při automatizaci extrakce dat z faktur s FlowHunt?

AI OCR od FlowHunt zvládne zpracovat faktury během vteřin za zlomek lidských nákladů, což přináší obrovské úspory a škálovatelnost pro rostoucí firmy.

Arshia je inženýr AI pracovních postupů ve FlowHunt. S vzděláním v oboru informatiky a vášní pro umělou inteligenci se specializuje na vytváření efektivních workflow, které integrují AI nástroje do každodenních úkolů a zvyšují tak produktivitu i kreativitu.

Arshia Kahani
Arshia Kahani
Inženýr AI pracovních postupů

Vyzkoušejte AI OCR nástroj na faktury od FlowHunt

Automatizujte extrakci dat z faktur s robustním AI OCR od FlowHunt. Ušetřete čas, snižte chybovost a zefektivněte své pracovní postupy převodem PDF na strukturovaná data během vteřin.

Zjistit více

Řešení úloh OCR pomocí AI
Řešení úloh OCR pomocí AI

Řešení úloh OCR pomocí AI

Objevte, jak AI poháněné OCR mění extrakci dat, automatizuje zpracování dokumentů a zvyšuje efektivitu v odvětvích jako finance, zdravotnictví a maloobchod. Pro...

3 min čtení
AI OCR +5
Optické rozpoznávání znaků (OCR)
Optické rozpoznávání znaků (OCR)

Optické rozpoznávání znaků (OCR)

Optické rozpoznávání znaků (OCR) je transformační technologie, která převádí dokumenty, jako jsou skeny, PDF nebo obrázky, na editovatelná a vyhledávatelná data...

5 min čtení
OCR Document Processing +5
Extraktor dat z faktur
Extraktor dat z faktur

Extraktor dat z faktur

Objevte, jak může OCR Flow pro extrakci dat z faktur zefektivnit vaše finanční procesy automatizací získávání a organizace údajů z faktur. Seznamte se s jeho fu...

2 min čtení
OCR Invoice Automation +3