Extracción de Datos de Facturas con OCR de IA usando un Script Simple en Python
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.

¿Qué es el OCR Basado en IA?
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.
Características Clave del OCR Basado en IA
- Comprensión Contextual: El OCR de IA utiliza NLP para entender el contexto en los documentos. Identifica campos como “Importe Total”, “Fecha de la Factura” y “Nombre del Cliente” cuando estos aparecen en distintos lugares.
- Flexibilidad: El OCR tradicional tiende a fallar con diseños irregulares; el OCR de IA es flexible y puede extraer información de diferentes tipos de formatos de factura sin dificultad.
- Estructuración de Datos: A menudo, el OCR de IA proporciona directamente salidas estructuradas que son más fáciles de procesar posteriormente que la salida de texto sin formato del OCR tradicional.
¿Por Qué Usar OCR de IA para Facturas?
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.
Beneficios del OCR de IA para Facturas
- Velocidad y Eficiencia: Con OCR de IA, se pueden procesar grandes cantidades de facturas en muy poco tiempo, liberando recursos y mano de obra.
- Mejora en la Precisión: Los modelos de IA entrenados en una amplia variedad de formatos de documentos reducen los errores asociados a la entrada manual de datos.
- Gestión de Datos Más Fluida: Dado que los datos ya están estructurados, se integran fácilmente en bases de datos, sistemas de análisis e incluso sistemas ERP.
- Escalabilidad: El OCR de IA puede procesar grandes volúmenes de documentos sin requerir más personal, lo que lo hace ideal para grandes organizaciones o aquellas en rápida expansión.
El ROI de usar la herramienta OCR de IA de FlowHunt
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.
Problemas al Implementar OCR
Aunque el OCR es muy beneficioso, presenta algunos desafíos:
- Calidad de Imagen: La precisión del OCR depende significativamente de la calidad de la imagen. Imágenes borrosas o de baja resolución ofrecen malos resultados.
- Formato Complejo: Los documentos con diseños complejos, fuentes mezcladas o tablas pueden requerir procesamiento OCR avanzado.
- Idioma y Conjunto de Caracteres: El software de OCR puede tener soporte limitado de idiomas, requiriendo modelos especializados para caracteres no latinos.
- Tasa de Error: Ningún software OCR es 100% preciso, especialmente con fuentes cursivas o irregulares, lo que puede introducir errores en los resultados.
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.
Configuración del Script de OCR en Python
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:
- requests: Para enviar solicitudes HTTP a la API de FlowHunt y descargar los resultados del OCR.
- pdf2image: Para convertir páginas PDF en imágenes.
- flowhunt: El SDK de Python de FlowHunt, que simplifica la interacción con la API de OCR.
Desglose Paso a Paso del Código
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
ytime
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
- La función recupera la URL para descargar la salida del OCR.
- Utiliza expresiones regulares para encontrar el objeto JSON con el enlace de descarga.
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>"}
)
- Convierte el PDF en imágenes.
- Configura el acceso a la API con las credenciales de FlowHunt.
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
- Autentica y recupera el
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)
- Prepara una sesión para subir imágenes y procesar OCR.
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()
)
- Sube cada imagen en la sesión para el procesamiento OCR.
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)
- Lanza el procesamiento OCR y consulta cada 3 segundos hasta su finalización.
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)
- Descarga la salida en CSV y la guarda localmente.
Ejecución del Script y Prueba de Resultados
Para ejecutar este script:
- Coloca tu archivo PDF en la carpeta
data/
. - Actualiza
<FLOW_ID_HERE>
y<API_KEY_HERE>
con tus credenciales de FlowHunt. - Ejecuta el script para convertir el PDF, subir imágenes para OCR y descargar los resultados estructurados en CSV.
Conclusión
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.
Resumen Completo del Código
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)
Preguntas frecuentes
- ¿Qué es el OCR basado en IA y en qué se diferencia del OCR tradicional?
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.
- ¿Cuáles son los principales beneficios de usar OCR de IA para facturas?
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.
- ¿Cómo puedo implementar la automatización de OCR de facturas con Python y FlowHunt?
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.
- ¿Qué desafíos existen en el procesamiento OCR y cómo los aborda FlowHunt?
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.
- ¿Cuál es el ROI de automatizar la extracción de datos de facturas con FlowHunt?
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.

Prueba la Herramienta de OCR de Facturas con IA de FlowHunt
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.