Este repositorio demuestra un conjunto de recursos que permiten implementar una Azure Function en Python que utiliza Tesseract OCR para identificar páginas dentro de documentos PDF que contienen texto específico. Luego, esa página se extrae y se guarda como imagen JPEG en Azure Blob Storage.
Cuando se utiliza en conjunto con el proyecto High Throughput Form Recognizer, permite realizar procesamiento de archivos y reconocimiento de formularios de forma escalable y eficiente, incluso para millones de documentos.
Nota: Si planeas utilizar esta solución junto con el High Throughput Form Recognizer, se recomienda ejecutar el script de despliegue de ambos repositorios usando los mismos valores para
appName,locationymyPublicIp, para asegurar su compatibilidad.
Esta solución utiliza los siguientes servicios de Azure:
-
Azure Blob Storage, con dos contenedores:
rawfile: almacena los documentos PDF originales de múltiples páginas.incoming: almacena las imágenes JPEG generadas (una por página relevante). Este nombre coincide con el contenedor esperado por el Form Recognizer.
-
Azure Service Bus, con dos colas:
rawqueue: identifica los documentos PDF que requieren procesamiento.formqueue: recibe los mensajes que activarán el reconocimiento posterior en el Form Recognizer.
-
Azure Functions:
PythonAIFunction: función contenedorizada que escucha en la colarawqueue, procesa el PDF, realiza el OCR con Tesseract y guarda la página como imagen JPEG.
-
Azure Container Registry:
- Repositorio desde el cual se despliega la función como contenedor Docker.
La solución utiliza Azure Managed Identity para conectarse de forma segura a Storage y enviar mensajes al Service Bus. Esta identidad requiere:
- Rol
Storage Blob Data Contributorpara la cuenta de almacenamiento. - Rol
Azure Service Bus Data Ownerpara el Service Bus.
KEYWORD_LIST: lista de palabras clave separadas por comas. La coincidencia distingue mayúsculas y minúsculas.SERVICEBUS_CONNECTION: cadena de conexión al Service Bus.STORAGE_ACCT_URL: URL de la cuenta de almacenamiento.SOURCE_CONTAINER_NAME: nombre del contenedor donde están los PDFs.DESTINATION_CONTAINER_NAME: nombre del contenedor donde se guardan las imágenes generadas.
El archivo
function.jsondebe tener configurado el campoqueueNamecon el nombre de la cola correspondiente del Service Bus.
Para probar la solución de punta a punta necesitas:
- Una suscripción de Azure con permisos para crear recursos.
- Tu dirección IP pública (ver aquí).
- Tener instalada la Azure CLI.
- Inicia sesión en Azure CLI:
az login
Ejecuta el comando de despliegue:
```powershell
.\deploy.ps1 -appName "<nombreApp>" -location "<regiónAzure>" -myPublicIp "<tu_ip_pública>"```
Esto creará todos los recursos necesarios para ejecutar la solución.
Reconstrucción de la imagen del contenedor
La imagen se construye y almacena automáticamente en Azure Container Registry como parte del despliegue. Si necesitas reconstruirla manualmente, usa este comando con Azure Container Registry Tasks:
```az acr build --registry "<nombre_registro>" --image "<nombre>:<tag>" --file ./DOCKERFILE . --no-logs```
Créditos
Este repositorio está basado en el trabajo original de mmckechney, adaptado para entornos de procesamiento OCR con Tesseract en Azure y ampliado para integrarse fácilmente en arquitecturas como VEA Connect.