5 puntos por GN⁺ 2024-08-10 | 1 comentarios | Compartir por WhatsApp
  • Diseñado para mejorar significativamente la calidad de la salida del reconocimiento óptico de caracteres (OCR)
  • Aprovecha técnicas modernas de procesamiento de lenguaje natural y modelos de lenguaje grandes (LLM) para convertir texto OCR sin procesar en documentos muy precisos, bien formateados y fáciles de leer

Funciones

  • Convertir PDF en imágenes
  • OCR con Tesseract
  • Corrección avanzada de errores usando LLM (local o basado en API)
  • Fragmentación inteligente de texto para un procesamiento eficiente
  • Opción de formato Markdown
  • Supresión de encabezados y números de página (opcional)
  • Evaluación de la calidad de la salida final
  • Soporte para LLM locales y proveedores de API en la nube (OpenAI, Anthropic)
  • Procesamiento asíncrono para mejorar el rendimiento
  • Registro detallado para seguimiento del proceso y depuración
  • Aceleración por GPU para la inferencia de LLM local

Requisitos

  • Python 3.12+
  • Motor OCR Tesseract
  • Biblioteca PDF2Image
  • PyTesseract
  • API de OpenAI (opcional)
  • API de Anthropic (opcional)
  • Soporte para LLM local (opcional, requiere modelos GGUF compatibles)

Cómo usarlo

  1. Coloca el archivo PDF en el directorio del proyecto
  2. Actualiza la variable input_pdf_file_path de la función main() con el nombre del archivo PDF
  3. Ejecuta el script:
    python llm_aided_ocr.py  
    
  4. El script generará varios archivos de salida, incluyendo el texto final posprocesado

Cómo funciona

El proyecto LLM-Aided OCR usa un proceso de múltiples etapas para transformar la salida OCR sin procesar en texto legible de alta calidad:

  1. Conversión de PDF: usa pdf2image para convertir el PDF de entrada en imágenes
  2. OCR: aplica Tesseract OCR para extraer texto de las imágenes
  3. Fragmentación de texto: divide la salida OCR sin procesar en fragmentos manejables
  4. Corrección de errores: cada fragmento pasa por un procesamiento basado en LLM para corregir errores de OCR y mejorar la legibilidad
  5. Formateo en Markdown (opcional): vuelve a dar formato al texto corregido en un Markdown limpio y consistente
  6. Evaluación de calidad: compara la calidad de la salida final con el texto OCR original mediante una evaluación basada en LLM

Resumen de GN⁺

  • El proyecto LLM-Aided OCR es un sistema que mejora significativamente la calidad de la salida OCR aprovechando técnicas modernas de procesamiento de lenguaje natural y modelos de lenguaje grandes
  • Convierte PDF en imágenes, extrae texto con Tesseract y luego corrige errores y lo reorganiza en formato Markdown mediante un LLM
  • Soporta tanto LLM locales como basados en la nube, y optimiza el rendimiento mediante procesamiento asíncrono
  • Este proyecto ofrece varias funciones avanzadas para aumentar la precisión y legibilidad de la salida OCR, y es especialmente útil para procesar documentos grandes
  • Proyectos con funciones similares incluyen ABBYY FineReader, Adobe Acrobat OCR, entre otros

1 comentarios

 
GN⁺ 2024-08-10
Opiniones de Hacker News
  • Con el lanzamiento del nuevo modelo schnell, podría ser posible obtener un conjunto de datos para producir modelos de visión SOTA

    • Actualmente, la mayoría de los modelos de visión se basan en captions antiguos de CLIP/BLIP
    • Modelos como LLAVA o phi-llava siguen estando limitados por componentes de visión preentrenados
    • El pipeline de Tessy y LLM es efectivo, y abre la posibilidad de que modelos multilingües lean y traduzcan trabajo digitalizado
    • LLAVA-PHI3 puede transcribir hebreo de forma consistente, pero tiene problemas de alucinación
    • Se espera que la calidad mejore mucho cuando aparezcan nuevos modelos de visión SOTA
  • En artículos científicos, el modelo nougat de Meta es el más adecuado

    • Para facturas y registros, el modelo donut es mejor
    • Ambos modelos pueden fallar en algunos casos, y hay que resolverlo usando un LLM
    • En el proceso de OCR se pierden detalles, por lo que es difícil manejar tablas y gráficos con precisión
    • Google Gemini ofrece ajuste fino para imágenes, pero no lo he probado
    • Los prompts de few-shot ayudan a evitar las alucinaciones del LLM y a ajustarlo al formato solicitado
  • Según intentos anteriores, funciona bien en el 90% de los casos

    • En documentos como contratos de arrendamiento hay dificultades con números y nombres (de personas o lugares/direcciones)
    • Un LLM no puede saber con exactitud la renta ni el nombre de una persona específica
  • Si conviertes una página PDF a PNG y le pides a gpt4 que transcriba la imagen, es muy preciso

    • Más preciso que Tesseract o el OCR clásico
  • Hace 10 años intenté reconocer chino con OCR usando Tesseract

    • Después de reconocer texto en inglés, es fácil limpiarlo
    • En chino, si se reconoce mal un solo carácter, es difícil detectar el error
    • Transformé la imagen con ImageMagick, la pasé a Tesseract y elegí el ganador votando según la frecuencia estadística de las oraciones reconocidas
    • La precisión mejoró mucho
  • Obtuve mejores resultados usando PaddlePaddle

    • Escribí una implementación en Python que corta libros a nivel de palabra usando PPOCRv3
    • PPOCRv4 no tiene límite de tamaño de píxel, así que se puede "usar de inmediato"
    • El modelo de detección de PPOCRv3 funcionó mejor
  • Preguntan si se probaron otros paquetes de OCR

    • Tesseract tenía el problema de leer "77" como "7"
  • Es importante ajustar el prompt para que el modelo entienda con mayor claridad

    • He pensado mucho sobre los LLM y los documentos
    • Creo que el OCR pronto será un problema completamente resuelto
    • El desafío es explicar de forma efectiva a los modelos de IA la ambigüedad y los detalles de documentos complejos
  • Estoy haciendo un trabajo similar analizando rúbricas y entregas de estudiantes

    • Me interesa integrarlo con GPT-4V
    • Quisiera contacto por correo
  • Preguntan sobre el enfoque de usar el prompt "fix this text" para corregir errores de OCR

    • Sugieren usar un modelo de completado en lugar de un modelo de chat, alimentándolo token por token para obtener la probabilidad del siguiente token
    • Creen que este método podría reducir mucho las alucinaciones