Ekstrakcja danych z faktur za pomocą AI OCR i prostego skryptu w Pythonie
Dowiedz się, jak zautomatyzować ekstrakcję danych z faktur za pomocą AI OCR i Pythona z API FlowHunt, umożliwiając szybkie, dokładne i skalowalne przetwarzanie dokumentów.

Czym jest AI OCR?
OCR wspierany przez sztuczną inteligencję wykracza poza możliwości tradycyjnego OCR, ponieważ wykorzystuje AI do rozumienia kontekstu, obsługi wielu typów układów oraz zapewniania wysokiej jakości, ustrukturyzowanej ekstrakcji nawet z najbardziej złożonych dokumentów. Podczas gdy tradycyjne OCR służy do odczytywania tekstu w stałych układach, AI OCR radzi sobie z wieloma rodzajami formatów i konfiguracji typowych dla faktur i dokumentów biznesowych.
Kluczowe cechy AI OCR
- Zrozumienie kontekstu: AI OCR wykorzystuje NLP do analizy kontekstowej dokumentów. Rozpoznaje pola takie jak „Kwota całkowita”, „Data faktury” czy „Nazwa klienta”, niezależnie od ich położenia.
- Elastyczność: Tradycyjne OCR gubi się przy nieregularnych układach; AI OCR jest elastyczne i wyciąga informacje z różnych formatów faktur bez problemu.
- Strukturyzacja danych: AI OCR często dostarcza już ustrukturyzowane wyniki, które łatwiej wykorzystać dalej niż surowy tekst z tradycyjnego OCR.
Dlaczego warto używać AI OCR do faktur?
Faktury muszą być przetwarzane szybko i z dużą dokładnością — niezależnie od tego, czy dotyczy to księgowości, logistyki czy działu zakupów. AI OCR automatyzuje ekstrakcję danych i usprawnia procesy, poprawiając jakość danych.
Korzyści z AI OCR dla faktur
- Szybkość i wydajność: Dzięki AI OCR można przetwarzać duże ilości faktur w krótkim czasie, oszczędzając zasoby i pracę ludzką.
- Większa dokładność: Modele AI wytrenowane na wielu formatach dokumentów redukują błędy typowe dla ręcznego wprowadzania danych.
- Łatwiejsze zarządzanie danymi: Dane są już ustrukturyzowane, więc łatwo integrują się z bazami danych, narzędziami analitycznymi czy systemami ERP.
- Skalowalność: AI OCR może obsłużyć ogromne ilości dokumentów bez zwiększania zatrudnienia, co jest idealne dla dużych lub szybko rosnących firm.
ROI z wykorzystania AI OCR FlowHunt
W większości firm ekstrakcja danych z faktur odbywa się ręcznie przez pracowników. To bardzo czasochłonny i kosztowny proces, który można zautomatyzować w wielu branżach, m.in. podatkowej, prawnej, finansowej i innych.
Ten proces zajmuje 5 do 15 sekund i kosztuje 0,01 – 0,02 kredytu, podczas gdy za tę samą pracę pracownikowi trzeba zapłacić 15–30 dolarów za godzinę.

Procesor | Koszt roczny | Liczba faktur rocznie | Koszt za fakturę |
---|---|---|---|
Człowiek | $30,000 | 12,000 | $2.50 |
FlowHunt | $162 | 12,000 | $0.013 |
FlowHunt (przy $30,000) | $30,000 | 2,250,000 | $0.0133 |
Można więc powiedzieć, że FlowHunt jest znacznie efektywniejszy.
Problemy przy wdrażaniu OCR
Mimo licznych zalet, OCR niesie ze sobą pewne wyzwania:
- Jakość obrazu: Skuteczność OCR w dużej mierze zależy od jakości obrazu. Rozmazane lub niskiej rozdzielczości zdjęcia dają słabe wyniki.
- Złożony układ: Dokumenty o skomplikowanych układach, mieszanych czcionkach czy tabelach mogą wymagać zaawansowanego OCR.
- Języki i zestawy znaków: Oprogramowanie OCR może mieć ograniczoną obsługę języków, przez co dla znaków spoza alfabetu łacińskiego wymagane są wyspecjalizowane modele.
- Wskaźnik błędów: Żaden system OCR nie jest w 100% dokładny, zwłaszcza przy pisankach lub nietypowych czcionkach, co może generować błędy w wynikach.
Aby rozwiązać te problemy, warto korzystać z wydajnego i elastycznego narzędzia OCR. API FlowHunt zapewnia solidne rozwiązanie OCR, radząc sobie ze złożonymi strukturami dokumentów — idealne do projektów na dużą skalę.
Konfiguracja skryptu OCR w Pythonie
Aby zautomatyzować proces, zainstaluj poniższe biblioteki Pythona:
pip install requests pdf2image git+https://github.com/QualityUnit/flowhunt-python-sdk.git
Zainstalujesz w ten sposób:
- requests: Do wysyłania żądań HTTP do API FlowHunt i pobierania wyników OCR.
- pdf2image: Do konwersji stron PDF na obrazy.
- flowhunt: SDK Pythona do FlowHunt, ułatwiające komunikację z API OCR.
Krok po kroku – opis działania kodu
Kod pobiera plik PDF, zamienia go na obrazy, przesyła każdy obraz do FlowHunt do przetworzenia OCR i zapisuje wynik w formacie CSV.
Import bibliotek
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
,time
— obsługa JSON, zarządzanie plikami, wyrażenia regularne i odstępy czasowe.requests
: Obsługuje żądania HTTP, np. pobieranie wyników OCR.flowhunt
: SDK FlowHunt do uwierzytelniania i komunikacji z API OCR.pdf2image
: Konwertuje strony PDF na obrazy, umożliwiając OCR pojedynczych stron.
Funkcja konwertująca strony PDF na obrazy
def convert_pdf_to_image(path: str) -> None:
"""
Konwertuje plik PDF na obrazy, zapisując każdą stronę 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
: Zamienia każdą stronę PDF na obraz.images[i].save
: Zapisuje każdą stronę jako osobny plik JPEG do przetwarzania OCR.
Ekstrakcja URL załącznika z wynikiem
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
- Funkcja pobiera URL do pobrania wyniku OCR.
- Wykorzystuje regex do znalezienia obiektu JSON z linkiem do pobrania.
Konfiguracja API i uwierzytelnienie
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>"}
)
- Konwertuje PDF na obrazy.
- Ustawia dostęp do API przez dane FlowHunt.
Inicjalizacja klienta 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
- Uwierzytelnia i pobiera
workspace_id
do dalszych wywołań API.
Rozpoczęcie sesji 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)
- Tworzy sesję do przesyłania obrazów i przetwarzania OCR.
Przesyłanie obrazów do 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()
)
- Przesyła każdy obraz w ramach sesji do przetwarzania OCR.
Wywołanie przetwarzania OCR i czekanie na wynik
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)
- Uruchamia OCR i co 3 sekundy sprawdza, czy przetwarzanie się zakończyło.
Pobieranie i zapisywanie wyniku 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)
- Pobiera wynik w CSV i zapisuje lokalnie.
Uruchomienie skryptu i testowanie wyników
Aby uruchomić ten skrypt:
- Umieść swój plik PDF w folderze
data/
. - Uzupełnij
<FLOW_ID_HERE>
i<API_KEY_HERE>
swoimi danymi FlowHunt. - Uruchom skrypt — PDF zostanie skonwertowany, obrazy przesłane do OCR, a wynik pobrany w CSV.
Podsumowanie
Ten skrypt w Pythonie to wydajne rozwiązanie do skalowania procesów OCR — idealne dla branż wymagających intensywnego przetwarzania dokumentów. Dzięki API FlowHunt uzyskasz konwersję dokumentów do CSV, usprawniając obieg dokumentów i zwiększając produktywność.
Pełny kod
Kliknij TUTAJ, aby zobaczyć wersję 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:
"""
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)
Najczęściej zadawane pytania
- Czym jest AI OCR i czym różni się od tradycyjnego OCR?
AI OCR wykorzystuje uczenie maszynowe i NLP do rozumienia kontekstu dokumentów, obsługi złożonych układów i wyodrębniania ustrukturyzowanych danych z faktur, w przeciwieństwie do tradycyjnego OCR, które opiera się na rozpoznawaniu tekstu w stałym układzie.
- Jakie są główne korzyści z używania AI OCR do faktur?
AI OCR zapewnia szybkość, dokładność, skalowalność i ustrukturyzowane wyniki, ograniczając pracę ręczną, minimalizując błędy i umożliwiając łatwą integrację z systemami biznesowymi.
- Jak mogę wdrożyć automatyzację OCR faktur w Pythonie i FlowHunt?
Korzystając z Python SDK FlowHunt, możesz konwertować PDF-y na obrazy, przesyłać je do API FlowHunt w celu OCR i pobierać dane w formacie CSV, automatyzując cały proces ekstrakcji.
- Jakie wyzwania występują w przetwarzaniu OCR i jak FlowHunt je rozwiązuje?
Typowe wyzwania to słaba jakość obrazu, złożone układy dokumentów i różne języki. API FlowHunt radzi sobie z nimi dzięki zaawansowanym modelom AI i elastycznym możliwościom przetwarzania.
- Jaki jest zwrot z inwestycji (ROI) z automatyzacji ekstrakcji danych z faktur za pomocą FlowHunt?
AI OCR FlowHunt potrafi przetwarzać faktury w kilka sekund, przy ułamku kosztów pracy ludzkiej, zapewniając ogromny wzrost efektywności i skalowalność dla rozwijających się firm.
Arshia jest Inżynierką Przepływów Pracy AI w FlowHunt. Z wykształceniem informatycznym i pasją do sztucznej inteligencji, specjalizuje się w tworzeniu wydajnych przepływów pracy, które integrują narzędzia AI z codziennymi zadaniami, zwiększając produktywność i kreatywność.

Wypróbuj narzędzie FlowHunt AI Invoice OCR
Automatyzuj ekstrakcję danych z faktur dzięki wydajnemu AI OCR FlowHunt. Oszczędzaj czas, minimalizuj błędy i usprawnij swoje procesy konwertując PDF-y na dane strukturalne w kilka sekund.