
Extractor de Datos de Facturas
Descubra cómo un flujo OCR de Extractor de Datos de Facturas puede optimizar sus procesos financieros automatizando la extracción y organización de datos de fac...
Aprende a automatizar la extracción de datos de facturas usando OCR basado en IA y Python con la API de FlowHunt, permitiendo un procesamiento documental rápido, preciso y escalable.
El OCR impulsado por IA va más allá de las capacidades del OCR tradicional al usar inteligencia artificial para entender el contexto, manejar diversas variedades de diseños y producir una extracción de datos estructurados de alta calidad incluso en los documentos más complejos. Mientras que el OCR tradicional está diseñado para captar texto de un formato fijo, el OCR de IA puede manejar muchos tipos de formatos y configuraciones habituales en facturas y otros documentos empresariales.
Las facturas deben procesarse de manera eficiente y con un alto grado de precisión, ya sea para el departamento de contabilidad, logística o compras. El OCR de IA automatiza la extracción de datos y optimiza los flujos de trabajo, mejorando la precisión de los datos.
La mayoría de las empresas convencionales extraen datos de facturas manualmente utilizando empleados para estas tareas. Esto es una operación muy costosa y que consume mucho tiempo, la cual puede ser automatizada en muchos campos y empresas, como firmas fiscales, legales, financieras y más.
Este proceso toma de 5 a 15 segundos y cuesta de 0.01 a 0.02 créditos, donde normalmente deberías pagar $15 – $30 por hora a un empleado para realizar la misma tarea.
Procesador | Costo por Año | Facturas Procesadas por Año | Costo por Factura |
---|---|---|---|
Humano | $30,000 | 12,000 | $2.50 |
FlowHunt | $162 | 12,000 | $0.013 |
FlowHunt (con $30,000) | $30,000 | 2,250,000 | $0.0133 |
Podría decir que FlowHunt es mucho más eficiente por un amplio margen.
Aunque el OCR es muy beneficioso, presenta algunos desafíos:
Para afrontar estos desafíos, es esencial usar una herramienta OCR potente y flexible. La API de FlowHunt ofrece una solución OCR robusta capaz de manejar estructuras documentales complejas, lo que la hace ideal para proyectos de OCR a gran escala.
Para automatizar el proceso, necesitarás instalar las siguientes bibliotecas de Python:
pip install requests pdf2image git+https://github.com/QualityUnit/flowhunt-python-sdk.git
Esto instala:
Este código tomará un PDF, lo convertirá en imágenes, enviará cada imagen a FlowHunt para el procesamiento OCR y guardará la salida en formato CSV.
Importar Bibliotecas
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
y time
ayudan con el manejo de JSON, gestión de archivos, expresiones regulares e intervalos de tiempo.requests
: Se usa para manejar solicitudes HTTP, como la descarga de los resultados de OCR.flowhunt
: El SDK de FlowHunt maneja la autenticación y comunicación con la API de OCR.pdf2image
: Convierte páginas PDF en imágenes, permitiendo el OCR de cada página.Función para Convertir Páginas PDF en Imágenes
def convert_pdf_to_image(path: str) -> None:
"""
Convertir un archivo PDF en imágenes, almacenando cada página como un 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
: Convierte cada página del PDF en una imagen.images[i].save
: Guarda cada página como un JPEG individual para el procesamiento OCR.Extracción de la URL de Adjuntos de Salida
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
Configuración y Autenticación de la API
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>"}
)
Inicialización del Cliente de la 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
workspace_id
para las siguientes llamadas a la API.Inicio de una Sesión de Flujo
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)
Subida de Imágenes para el Procesamiento 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()
)
Invocación del Procesamiento OCR y Consulta de Resultados
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)
Descarga y Guardado de la Salida 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)
Para ejecutar este script:
data/
.<FLOW_ID_HERE>
y <API_KEY_HERE>
con tus credenciales de FlowHunt.Este script en Python ofrece una solución eficiente para escalar procesos de OCR, ideal para industrias con alta demanda de procesamiento documental. Con la API de FlowHunt, esta solución gestiona la conversión de documentos a CSV, optimizando flujos de trabajo y aumentando la productividad.
Haz clic AQUÍ para ver la versión 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)
El OCR basado en IA aprovecha el aprendizaje automático y el NLP para entender el contexto del documento, manejar diseños complejos y extraer datos estructurados de las facturas, a diferencia del OCR tradicional que se basa en el reconocimiento de texto de formato fijo.
El OCR de IA proporciona velocidad, precisión, escalabilidad y salidas estructuradas, reduciendo el trabajo manual, minimizando errores y permitiendo una integración fluida con los sistemas empresariales.
Usando el SDK de Python de FlowHunt, puedes convertir PDFs en imágenes, enviarlas a la API de FlowHunt para OCR y recuperar los datos estructurados en formato CSV, automatizando todo el proceso de extracción.
Los desafíos comunes incluyen baja calidad de imagen, estructuras de documentos complejas y variedad de idiomas. La API de FlowHunt está diseñada para abordar estos retos con modelos avanzados de IA y capacidades de procesamiento flexibles.
El OCR de IA de FlowHunt puede procesar facturas en segundos a una fracción del costo humano, aportando enormes ganancias de eficiencia y escalabilidad para empresas en crecimiento.
Arshia es ingeniera de flujos de trabajo de IA en FlowHunt. Con formación en ciencias de la computación y una pasión por la IA, se especializa en crear flujos de trabajo eficientes que integran herramientas de IA en las tareas cotidianas, mejorando la productividad y la creatividad.
Automatiza la extracción de datos de facturas con el robusto OCR de IA de FlowHunt. Ahorra tiempo, reduce errores y optimiza tus flujos de trabajo convirtiendo PDFs en datos estructurados en segundos.
Descubra cómo un flujo OCR de Extractor de Datos de Facturas puede optimizar sus procesos financieros automatizando la extracción y organización de datos de fac...
Descubre cómo el OCR potenciado por IA está transformando la extracción de datos, automatizando el procesamiento de documentos y generando eficiencia en industr...
El Reconocimiento Óptico de Caracteres (OCR) es una tecnología transformadora que convierte documentos como papeles escaneados, PDFs o imágenes en datos editabl...