Extragerea Datelor din Facturi cu AI OCR folosind un Script Python Simplu

Extragerea Datelor din Facturi cu AI OCR folosind un Script Python Simplu

Află cum să automatizezi extragerea datelor din facturi utilizând OCR bazat pe AI și Python cu API-ul FlowHunt, pentru o procesare rapidă, precisă și scalabilă a documentelor.

Ce este OCR-ul bazat pe AI?

OCR-ul bazat pe AI depășește capacitățile OCR-ului tradițional deoarece folosește inteligența artificială pentru a înțelege contextul, a gestiona o varietate mare de layout-uri și a realiza extragerea de date structurate de înaltă calitate chiar și din cele mai complexe documente. În timp ce OCR-ul tradițional este conceput să preia textul dintr-un format fix, AI OCR poate gestiona numeroase tipuri de layout și configurații întâlnite în mod obișnuit în facturi și alte documente de business.

Caracteristici cheie ale OCR-ului bazat pe AI

  • Înțelegere contextuală: AI OCR folosește NLP pentru a înțelege contextul din documente. Identifică câmpuri precum „Valoare Totală”, „Data Facturii” și „Nume Client” indiferent de locul în care apar în document.
  • Flexibilitate: OCR-ul tradițional cedează la layout-uri neregulate; AI OCR este flexibil și poate extrage informații din diverse formate de facturi fără dificultate.
  • Structurarea datelor: De cele mai multe ori, AI OCR oferă direct rezultate structurate, mult mai ușor de procesat ulterior decât output-ul brut al OCR-ului tradițional.

De ce să folosești AI OCR pentru facturi?

Facturile trebuie procesate eficient și cu un grad ridicat de acuratețe, fie că este vorba de departamentul de contabilitate, logistică sau achiziții. AI OCR automatizează extragerea datelor și optimizează fluxurile de lucru, îmbunătățind acuratețea datelor.

Beneficiile AI OCR pentru facturi

  • Viteză și eficiență: Cu AI OCR, un număr mare de facturi poate fi procesat în timp minim, eliberând resurse și personal.
  • Acuratețe îmbunătățită: Modelele AI, antrenate pe o multitudine de formate de documente, reduc erorile asociate introducerii manuale a datelor.
  • Gestionare mai ușoară a datelor: Deoarece datele sunt deja structurate, pot fi integrate ușor în baze de date, sisteme de analiză sau ERP.
  • Scalabilitate: AI OCR poate procesa volume mari de documente fără a necesita personal suplimentar, fiind ideal pentru companii mari sau în expansiune rapidă.

ROI-ul utilizării instrumentului AI OCR de la FlowHunt

Majoritatea companiilor convenționale extrag datele din facturi manual, utilizând angajați pentru aceste sarcini. Aceasta este o operațiune foarte consumatoare de timp și costisitoare, care poate fi automatizată în numeroase domenii și companii, precum cele fiscale, juridice, financiare și altele.

Acest proces durează între 5 și 15 secunde și costă 0,01 – 0,02 credite, în timp ce, în mod normal, ai plăti 15$ – 30$ pe oră pentru ca un angajat să facă aceeași sarcină.

OCR Cost Comparison
ProcesatorCost pe anFacturi procesate pe anCost per factură
Uman$30,00012,000$2.50
FlowHunt$16212,000$0.013
FlowHunt (la $30,000)$30,0002,250,000$0.0133

Aș spune că FlowHunt este mult mai eficient, la o diferență majoră.

Probleme la implementarea OCR

Deși OCR-ul este extrem de benefic, vine cu unele provocări:

  1. Calitatea imaginii: Precizia OCR depinde semnificativ de calitatea imaginii. Imaginile neclare sau de rezoluție mică oferă rezultate slabe.
  2. Formatare complexă: Documentele cu layout-uri complexe, fonturi mixte sau tabele pot necesita procesare OCR avansată.
  3. Limba și setul de caractere: Software-ul OCR poate avea suport limitat pentru anumite limbi, necesitând modele specializate pentru caractere non-latine.
  4. Rata de eroare: Niciun software OCR nu este 100% precis, mai ales la fonturi cursive sau neregulate, ceea ce poate introduce erori în rezultate.

Pentru a depăși aceste provocări, este esențial să folosești un instrument OCR puternic și flexibil. API-ul FlowHunt oferă o soluție robustă, capabilă să gestioneze structuri complexe de documente, fiind ideal pentru proiecte OCR la scară mare.

Configurarea scriptului Python OCR

Pentru a automatiza procesul, vei avea nevoie să instalezi următoarele biblioteci Python:

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

Acestea includ:

  • requests: Pentru trimiterea de cereri HTTP către API-ul FlowHunt și descărcarea rezultatelor OCR.
  • pdf2image: Pentru conversia paginilor PDF în imagini.
  • flowhunt: SDK-ul Python de la FlowHunt, care simplifică interacțiunea cu API-ul OCR.

Descriere pas cu pas a codului

Acest cod va prelua un PDF, îl va converti în imagini, va trimite fiecare imagine către FlowHunt pentru procesare OCR și va salva rezultatul în format CSV.

Importul bibliotecilor

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 și time ajută la manipularea JSON, gestionarea fișierelor, expresii regulate și timpi de așteptare.
  • requests: Pentru gestionarea cererilor HTTP, cum ar fi descărcarea rezultatelor OCR.
  • flowhunt: SDK-ul FlowHunt gestionează autentificarea și comunicarea cu API-ul OCR.
  • pdf2image: Convertește paginile PDF în imagini pentru OCR pe fiecare pagină.

Funcție pentru conversia paginilor PDF în imagini

def convert_pdf_to_image(path: str) -> None:
    """
    Converteste un fișier PDF în imagini, stocând fiecare pagină ca 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: Convertește fiecare pagină PDF în imagine.
  • images[i].save: Salvează fiecare pagină ca JPEG individual pentru procesarea OCR.

Extragerea URL-ului atașamentului rezultat

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
  • Funcția recuperează URL-ul de descărcare a rezultatului OCR.
  • Folosește regex pentru a găsi obiectul JSON cu linkul de descărcare.

Configurarea API-ului și autentificare

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>"}
)
  • Convertește PDF-ul în imagini.
  • Configurează accesul la API cu credențialele FlowHunt.

Inițializarea clientului API

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
  • Autentifică și recuperează workspace_id pentru apelurile API ulterioare.

Pornirea unei sesiuni 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)
  • Creează o sesiune pentru încărcarea imaginilor și procesarea OCR.

Încărcarea imaginilor pentru procesarea OCR

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()
            )
  • Încarcă fiecare imagine în sesiune pentru procesarea OCR.

Invocarea procesării OCR și verificarea rezultatelor

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)
  • Pornește procesarea OCR și verifică la fiecare 3 secunde până la finalizare.

Descărcarea și salvarea rezultatului OCR

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)
  • Descarcă rezultatul CSV și îl salvează local.

Rularea scriptului și testarea rezultatului

Pentru a executa acest script:

  1. Plasează PDF-ul în folderul data/.
  2. Înlocuiește <FLOW_ID_HERE> și <API_KEY_HERE> cu datele tale de autentificare FlowHunt.
  3. Rulează scriptul pentru a converti PDF-ul, a încărca imaginile pentru OCR și a descărca rezultatele CSV structurate.

Concluzie

Acest script Python oferă o soluție eficientă pentru scalarea proceselor OCR, ideală pentru industrii cu cerințe ridicate de procesare a documentelor. Cu API-ul FlowHunt, această soluție gestionează conversia document–CSV, eficientizând fluxurile de lucru și crescând productivitatea.

Prezentare generală a codului complet

Click AICI pentru versiunea Gist.

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:
    """
    Converteste un fișier pdf într-o imagine
    :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)

Întrebări frecvente

Ce este OCR-ul bazat pe AI și cu ce diferă de OCR-ul tradițional?

OCR-ul bazat pe AI utilizează machine learning și NLP pentru a înțelege contextul documentului, a gestiona layout-uri complexe și a extrage date structurate din facturi, spre deosebire de OCR-ul tradițional care se bazează pe recunoașterea textului în format fix.

Care sunt principalele beneficii ale utilizării AI OCR pentru facturi?

AI OCR oferă viteză, acuratețe, scalabilitate și rezultate structurate, reducând munca manuală, minimizând erorile și facilitând integrarea cu sistemele de business.

Cum pot implementa automatizarea OCR pentru facturi cu Python și FlowHunt?

Folosind SDK-ul Python de la FlowHunt, poți converti PDF-uri în imagini, le poți trimite către API-ul FlowHunt pentru OCR și poți obține date structurate în format CSV, automatizând întregul proces de extragere.

Ce provocări există în procesarea OCR și cum le abordează FlowHunt?

Provocările frecvente includ calitatea slabă a imaginilor, layout-uri complexe ale documentelor și limbi diverse. API-ul FlowHunt este conceput să le gestioneze cu modele AI avansate și capabilități flexibile de procesare.

Care este ROI-ul automatizării extragerii datelor din facturi cu FlowHunt?

AI OCR-ul de la FlowHunt poate procesa facturi în câteva secunde la o fracțiune din costul uman, oferind câștiguri majore de eficiență și scalabilitate pentru afacerile în creștere.

Arshia este Inginer de Fluxuri AI la FlowHunt. Cu o pregătire în informatică și o pasiune pentru inteligența artificială, el este specializat în crearea de fluxuri eficiente care integrează instrumente AI în sarcinile de zi cu zi, sporind productivitatea și creativitatea.

Arshia Kahani
Arshia Kahani
Inginer de Fluxuri AI

Încearcă instrumentul AI Invoice OCR de la FlowHunt

Automatizează extragerea datelor din facturi cu AI OCR-ul robust de la FlowHunt. Economisește timp, reduce erorile și eficientizează procesele prin conversia PDF-urilor în date structurate în câteva secunde.

Află mai multe

Rezolvarea sarcinilor OCR cu AI
Rezolvarea sarcinilor OCR cu AI

Rezolvarea sarcinilor OCR cu AI

Descoperă cum OCR-ul alimentat de AI transformă extragerea datelor, automatizează procesarea documentelor și crește eficiența în industrii precum finanțe, sănăt...

4 min citire
AI OCR +5
Recunoașterea Optică a Caracterelor (OCR)
Recunoașterea Optică a Caracterelor (OCR)

Recunoașterea Optică a Caracterelor (OCR)

Recunoașterea Optică a Caracterelor (OCR) este o tehnologie transformatoare care convertește documente precum hârtii scanate, PDF-uri sau imagini în date editab...

6 min citire
OCR Document Processing +5
Extractor de Date din Facturi
Extractor de Date din Facturi

Extractor de Date din Facturi

Descoperă cum un flux OCR pentru Extractorul de Date din Facturi poate eficientiza procesele financiare prin automatizarea extragerii și organizării datelor din...

2 min citire
OCR Invoice Automation +3