VOP: herramienta de OCR para extraer diagramas complejos y fórmulas matemáticas

Introducción general

Versatile OCR Program es una herramienta de reconocimiento óptico de caracteres (OCR) de código abierto diseñada para procesar documentos académicos y educativos complejos. Puede extraer texto, tablas, fórmulas matemáticas, gráficos y esquemas de PDF, imágenes y otros documentos, y generar datos estructurados adecuados para la formación en aprendizaje automático. Es compatible con varios idiomas, incluidos el inglés, el japonés y el coreano, y el formato de salida es JSON o Markdown, lo que resulta muy práctico para los desarrolladores.

VOP:提取复杂图表与数学公式的OCR工具VOP:提取复杂图表与数学公式的OCR工具

 

Lista de funciones

  • Extrae texto en varios idiomas, admite inglés, japonés, coreano, etc., y puede ampliarse a otros idiomas.
  • Reconocer fórmulas matemáticas y generar código LaTeX y descripciones en lenguaje natural.
  • Analiza tablas, conserva la estructura de filas y columnas y genera datos estructurados.
  • Analizar diagramas y esquemas para generar anotaciones semánticas y descripciones (por ejemplo, "Este diagrama muestra las cuatro etapas de la división celular").
  • Maneje PDF de maquetación compleja, identificando con precisión los párrafos con muchas fórmulas y los elementos visuales.
  • Genera salidas en formato JSON o Markdown que contienen contexto semántico para optimizar el entrenamiento de la IA.
  • Utilice DocLayout-YOLO, Google Vision API, MathPix y otras tecnologías para mejorar la precisión del reconocimiento.
  • Proporciona una alta precisión de 90-95% para conjuntos de datos académicos reales (por ejemplo, Biología de la EJU, Matemáticas de la Eastern University).
  • Admite el procesamiento por lotes para gestionar la entrada de varios archivos.

 

Utilizar la ayuda

Proceso de instalación

Para utilizar Versatile OCR Program, es necesario clonar el repositorio y configurar el entorno. A continuación se detallan los pasos a seguir:

  1. almacén de clones
    Se ejecuta en el terminal:

    git clone https://github.com/ses4255/Versatile-OCR-Program.git
    cd Versatile-OCR-Program
    
  2. Creación de un entorno virtual
    Se recomienda Python 3.8 o superior. Cree y active un entorno virtual:

    python -m venv venv
    source venv/bin/activate  # Linux/Mac
    venv\Scripts\activate     # Windows
    
  3. Instalación de dependencias
    Instale las bibliotecas necesarias para el proyecto:

    pip install -r requirements.txt
    

    Las dependencias incluyenopencv-pythonygoogle-cloud-visionymathpixypillowetc. Asegúrese de que la conexión de red es estable.

  4. Configuración de la clave API
    El proyecto se basa en API externas (por ejemplo, Google Vision, MathPix) para el procesamiento avanzado de OCR:

    • API de Google Vision: enconfig/para crear el directoriogoogle_credentials.jsonIntroduzca la clave de la cuenta de servicio. Para obtener la clave, visiteConsola de Google Cloud.
    • API MathPix: enconfig/para crear el directoriomathpix_config.jsonRellenarapp_idresponder cantandoapp_key. Regístrese para obtener una cuenta MathPix para obtener la clave.
    • Las plantillas de archivos de configuración están disponibles en el proyectoREADME.md.
  5. Verificar la instalación
    Ejecute el script de prueba para asegurarse de que el entorno es correcto:

    python test_setup.py
    

    Si no hay errores, la instalación se ha completado.

flujo de trabajo

El programa Versatile OCR se ejecuta en dos fases: extracción inicial y tratamiento semántico.

1. Extracción inicial del OCR

estar en movimientoocr_stage1.pyExtraer elementos en bruto (texto, tablas, gráficos, etc.):

python ocr_stage1.py --input sample.pdf --output temp/
  • --inputEspecifique el archivo de entrada (PDF o imagen, por ejemplo PNG, JPEG).
  • --outputEspecifica el directorio de resultados intermedios que contiene coordenadas, imágenes recortadas, etc.
  • Compatibilidad con el tratamiento por lotes: utilice--input_dirEspecifique la carpeta.

2. Tratamiento semántico y resultado final

estar en movimientoocr_stage2.pyConvierte los datos intermedios en salida estructurada:

python ocr_stage2.py --input temp/ --output final/ --format json
  • --inputEspecifica el directorio de salida para la primera etapa.
  • --formatSeleccione el formato de salida (jsontal vezmarkdown).
  • La salida contiene texto, descripciones de fórmulas, datos tabulares y etiquetado semántico de gráficos.

Funciones principales

1. Extracción de textos multilingües

Extrae texto de PDF o imágenes con soporte multilingüe:

python ocr_stage1.py --input document.pdf --lang eng+jpn+kor --output temp/
python ocr_stage2.py --input temp/ --output final/ --format markdown
  • --langEspecifique la lengua en el formatoeng(Inglés),jpn(Japonés),kor(coreano), Multilingüe+Conexiones.
  • El archivo de salida contiene contenido textual y contexto semántico, guardado como Markdown o JSON.

2. Identificación de fórmulas matemáticas

Identifique fórmulas y genere códigos y descripciones LaTeX. Por ejemplo, la fórmulax^2 + y = 5La salida es "una ecuación cuadrática con variables x e y". Operación:

python ocr_stage1.py --input math.pdf --mode math --output temp/
python ocr_stage2.py --input temp/ --output final/ --format json
  • --mode mathReconocimiento de la fórmula de activación.
  • El resultado contiene código LaTeX y descripciones en lenguaje natural.

3. Análisis de cuadros

Extraer la tabla, conservando la estructura de filas y columnas:

python ocr_stage1.py --input table.pdf --mode table --output temp/
python ocr_stage2.py --input temp/ --output final/ --format json
  • --mode tableEspecializada en el tratamiento de formularios.
  • La salida es JSON con datos de filas y columnas y una descripción resumida.

4. Análisis gráfico y esquemático

Analice gráficos o diagramas para generar anotaciones semánticas. Por ejemplo, un gráfico lineal podría mostrar "Gráfico lineal que muestra el cambio de temperatura de 2010 a 2020". Acción:

python ocr_stage1.py --input diagram.pdf --mode figure --output temp/
python ocr_stage2.py --input temp/ --output final/ --format markdown
  • --mode figureActivar el análisis de gráficos.
  • La salida contiene la descripción de la imagen, la extracción de puntos de datos y el contexto.

Trucos y consejos

  • Mayor precisiónEntrada de archivos de alta resolución (se recomiendan 300 DPI). Añadir en tiempo de ejecución--dpi 300Optimización del análisis de imágenes.
  • archivo por lotes: Uso de--input_dir data/Procesa todos los archivos de la carpeta.
  • lenguaje personalizado:: Editorialconfig/languages.jsonPara añadir un idioma, es necesario instalar el modelo OCR correspondiente (por ejemplo, el paquete de idiomas de Tesseract).
  • Registro de depuración: Añadir--verboseVer información detallada sobre el funcionamiento.
  • salida comprimida: Uso de--compressReducir el tamaño del archivo JSON.

advertencia

  • Asegúrese de que los documentos introducidos son claros; los documentos de baja calidad pueden reducir la precisión del reconocimiento.
  • Se requiere una red estable para la API externa, y se recomienda configurar una clave de repuesto.
  • El directorio de salida debe tener suficiente espacio en disco; los PDF de gran tamaño pueden generar archivos más grandes.
  • Según la licencia GNU AGPL-3.0, los proyectos derivados deben poner el código fuente a disposición del público.
  • El proyecto planea lanzar la integración de la tubería de IA dentro de un mes, así que permanezca atento.

Con estos pasos, los usuarios pueden empezar a trabajar rápidamente, procesar documentos complejos y generar datos de entrenamiento de IA.

 

escenario de aplicación

  1. Extracción de datos de investigación académica
    Los investigadores pueden extraer fórmulas, tablas y gráficos de exámenes o redacciones para generar conjuntos de datos con anotaciones semánticas. Por ejemplo, los exámenes de matemáticas de la Eastern University se convirtieron a JSON para el entrenamiento de modelos geométricos.
  2. Digitalización de recursos educativos
    Los centros de enseñanza pueden convertir libros de texto o exámenes en papel a formato electrónico, extraer textos y gráficos multilingües y generar archivos en los que se puedan realizar búsquedas. Adecuado para el tratamiento multilingüe de programas internacionales.
  3. Construcción de conjuntos de datos de aprendizaje automático
    Los desarrolladores pueden extraer datos estructurados de documentos académicos para generar conjuntos de entrenamiento de alta calidad. Por ejemplo, extraer diagramas de división celular de artículos de biología, etiquetar descripciones de etapas y entrenar modelos de reconocimiento de imágenes.
  4. Tratamiento de documentos de archivo
    Las bibliotecas pueden convertir documentos académicos históricos a formato digital, conservando fórmulas y estructuras de tablas para mejorar la eficacia de la recuperación. Admite el procesamiento en PDF de diseños complejos.
  5. Herramientas de análisis de exámenes
    Los centros educativos pueden analizar el contenido de los cuestionarios, extraer tipos de preguntas y gráficos, generar informes estadísticos y optimizar el diseño de la enseñanza.

 

CONTROL DE CALIDAD

  1. ¿Qué formatos de entrada admite?
    Se admiten PDF e imágenes (PNG, JPEG). Se recomienda utilizar PDF de alta resolución para garantizar la precisión.
  2. ¿Cómo puedo mejorar la precisión del reconocimiento de formularios?
    Utilizar una documentación clara para permitir--dpi 300. En el caso de las tablas japonesas, la API Google Vision supera a MathPix y puede utilizarse en laconfig/Ajuste medio.
  3. ¿Tengo que utilizar una API de pago?
    Las API de Google Vision y MathPix requieren una cuenta de pago, pero los módulos de código abierto como DocLayout-YOLO son gratuitos. Se recomienda configurar la API para obtener mejores resultados.
  4. ¿Cómo añado una nueva lengua?
    compiladorconfig/languages.jsonañada el código de idioma y el modelo de OCR (por ejemplo, el paquete de idioma Tesseract). Reinicie el programa para que surta efecto.
  5. ¿Y si el archivo de salida es demasiado grande?
    gasto o desembolso--compressComprimir JSON, o elegir el formato Markdown. También es posible limitar el módulo de salida, por ejemplo, para extraer sólo texto (--mode text).
  6. ¿Cómo puedo participar en la mejora de los proyectos?
    Las Pull Requests pueden enviarse a través de GitHub o poniéndose en contacto con el autor en ses425500000@gmail.com. No dudes en contribuir con código o dar tu opinión sobre los problemas.
© declaración de copyright

Artículos relacionados

Sin comentarios

Debe iniciar sesión para participar en los comentarios.
Acceder ahora
ninguno
Sin comentarios...