Extracción de esquemas técnicos v0.1.0: arquitectura, mejoras y trabajo futuro

Los esquemas técnicos son la columna vertebral del sector retail, pero extraerlos de los PDF sigue siendo un desafío persistente. Los profesionales de marketing, los responsables de merchandising y los desarrolladores de producto suelen perder un tiempo valioso recorriendo documentos recargados para encontrar diagramas clave, como distribuciones de estanterías, diseños de embalaje o esquemas técnicos de producto. Esta ineficiencia no solo afecta a los plazos de los proyectos, sino que también eleva los costos.
En atronous.ai hemos desarrollado el PDF Schematic Extractor, una solución automatizada que extrae y etiqueta con precisión los esquemas técnicos contenidos en archivos PDF, URL o archivos HTML. Al agilizar este proceso, ayudamos a los equipos a ahorrar tiempo, mejorar la exactitud y acelerar el desarrollo de productos, al tiempo que reducimos el riesgo de retrasos costosos.

A la izquierda, una página compleja de un documento de producto; a la derecha, el esquema técnico limpio que extrajimos
Descripción general del PDF Schematic Extractor
El PDF Schematic Extractor es un paquete de Python diseñado para convertir archivos (URL, HTML) en PDF y extraer esquemas técnicos mediante PyMuPDF, OpenCV, Tesseract y Gemini para el etiquetado. Admite tanto una interfaz de línea de comandos como una interfaz web basada en Streamlit, lo que permite a los usuarios cargar archivos, extraer esquemas técnicos y descargar los resultados como archivos ZIP. Las mejoras recientes se han centrado en perfeccionar el proceso de extracción de esquemas técnicos y en resolver los desafíos de exactitud, eficiencia y facilidad de uso.
Flujo de trabajo del PDF Schematic Extractor
El proyecto sigue un pipeline estructurado para procesar las entradas y extraer los esquemas técnicos, como se ilustra en el diagrama de flujo:
- Tratamiento de las entradas: la herramienta acepta tres tipos de entrada: URL, archivos o cadenas HTML, o PDF. Las entradas de URL y HTML se procesan con las funciones url_to_pdf y html_to_pdf de
core.py, que usan wkhtmltopdf para convertirlas en PDF. Si la entrada ya es un PDF, se usa directamente en las etapas siguientes del procesamiento. - Conversión del PDF en imágenes: el PDF (tanto si se recibe directamente como si se ha convertido a partir de una URL o de HTML) se convierte en imágenes con PyMuPDF en el paso “Convertir el PDF en imágenes”. Cada página del PDF se renderiza como una imagen independiente para facilitar el procesamiento basado en imágenes.
- Procesamiento de imágenes y detección de texto: cada imagen se somete a un preprocesamiento en el paso “Procesamiento de imágenes” para mejorar su calidad (p. ej., ajustando el contraste). A continuación, en el paso “Extracción de texto por OCR” se aplica el reconocimiento óptico de caracteres (OCR) de Tesseract para detectar el texto, y un paso “Filtrar zonas con mucho texto” identifica y excluye las regiones dominadas por texto, de modo que el análisis se centre en las zonas con aspecto de esquema técnico.
- Detección y extracción de esquemas técnicos: el paso “Detección de contornos” usa OpenCV para identificar posibles regiones de esquemas técnicos mediante la detección de contornos. Estos contornos se agrupan en el paso “Agrupar contornos” para formar entidades coherentes de esquema técnico, lo que reduce la fragmentación. El paso “Extraer esquemas técnicos de las imágenes” aísla estas regiones como imágenes individuales de esquemas técnicos.
- Etiquetado con Gemini: el paso “Validación de esquemas técnicos” usa Gemini para confirmar que las regiones extraídas son realmente esquemas técnicos. El texto cercano se extrae en el paso “Obtener el texto cercano”, y Gemini genera etiquetas específicas en el paso “Generar etiquetas específicas con Gemini”, lo que proporciona etiquetas que tienen en cuenta el contexto (p. ej., “Diagrama de circuito: fuente de alimentación”).
- Generación de resultados: los esquemas técnicos extraídos se guardan como imágenes en el paso “Imágenes de esquemas técnicos”. Una opción “Depuración con cuadros delimitadores” superpone cuadros delimitadores y etiquetas sobre las imágenes para que el usuario las revise. El resultado final, con sus metadatos (p. ej., número de página, etiqueta), se guarda como un archivo JSON y puede descargarse como archivo ZIP desde la interfaz web.
Mejoras en la extracción de esquemas técnicos
- Mayor exactitud de detección gracias a la agrupación y el filtrado de contornos: la detección inicial de esquemas técnicos a menudo pasaba por alto o fragmentaba los esquemas en los PDF complejos. Introdujimos un paso “Agrupar contornos” (como se muestra en el diagrama de flujo) para reunir los contornos cercanos en entidades coherentes de esquema técnico según su proximidad y su tamaño. Además, un paso “Filtrar zonas con mucho texto” que usa el OCR de Tesseract excluye las regiones dominadas por texto, de modo que el análisis se centra en las zonas con aspecto de esquema técnico (p. ej., dibujos técnicos). Esto ha aumentado la exactitud de la detección, sobre todo en los PDF de contenido mixto.
- Etiquetado mejorado con la integración de Gemini: antes, el etiquetado se veía afectado por resultados de OCR incoherentes. Al integrar Gemini en los pasos “Validación de esquemas técnicos” y “Generar etiquetas específicas con Gemini”, mejoramos la precisión de las etiquetas. Gemini valida las regiones de esquemas técnicos y genera etiquetas que tienen en cuenta el contexto analizando el texto cercano y el contenido visual. Por ejemplo, un diagrama de circuito ahora puede etiquetarse como “Diagrama de circuito: fuente de alimentación” en lugar de “Diagrama”, lo que facilita su uso en aplicaciones posteriores como la catalogación.
- Preprocesamiento optimizado para una extracción más rápida: el pipeline de preprocesamiento original era lento con los PDF grandes debido a conversiones redundantes. Optimizamos las etapas “Procesamiento de imágenes” y “Convertir el PDF en imágenes” implementando el procesamiento en paralelo para los PDF de varias páginas y reduciendo la resolución de las imágenes intermedias sin pérdida de calidad. El paso “Extraer esquemas técnicos de las imágenes” usa ahora una umbralización adaptativa (mediante el parámetro
--threshold), lo que reduce el tiempo de procesamiento sin sacrificar la exactitud. - Personalización por parte del usuario y ayuda para la depuración: para resolver los casos de “No Schematics Extracted” (no se extrajo ningún esquema técnico), ampliamos las opciones de configuración con parámetros ajustables (
--min-area,--padding,--threshold) en la interfaz de línea de comandos (CLI). Se agregó una opción de salida “Depuración con cuadros delimitadores”, que genera imágenes de esquemas técnicos con cuadros delimitadores y etiquetas superpuestos. Esta transparencia ayuda a los usuarios a depurar y ajustar la configuración de extracción de forma eficaz.
Posibles desarrollos futuros
-
Procesamiento en tiempo real para la interfaz web
La aplicación web de Streamlit procesa los PDF por lotes, lo que resulta lento con archivos grandes. Implementar el procesamiento en tiempo real, extrayendo y mostrando los esquemas técnicos a medida que se procesa cada página, mejoraría la experiencia del usuario. Para ello se podría recurrir al procesamiento asíncrono y a entradas en flujo continuo (streaming), con el fin de ofrecer una respuesta más rápida.
-
Etiquetado mejorado con comprensión del contexto y LLM/SLM locales
Aunque Gemini ha mejorado el etiquetado, puede interpretar mal el contexto debido a una comprensión limitada del documento en su conjunto y a su dependencia de una API externa. En el futuro se podría integrar un modelo de procesamiento del lenguaje natural (PLN) que analice todo el texto del PDF y aporte pistas de contexto (p. ej., identificar que el documento pertenece al ámbito de la ingeniería eléctrica) para mejorar la exactitud del etiquetado. Además, incorporar modelos de lenguaje de gran tamaño (LLM) o modelos de lenguaje pequeños (SLM) locales, como LLaMA, Phi-4-multimodal o DistilBERT, permitiría el procesamiento en el propio dispositivo y reduciría la dependencia de API externas como Gemini. Esto mejoraría la privacidad, reduciría la latencia y permitiría el funcionamiento sin conexión. Por ejemplo, un SLM local podría someterse a un ajuste fino (fine-tuning) con terminología técnica para etiquetar un esquema técnico como “Disposición de transistores” con mayor precisión, incluso en entornos con recursos limitados.
-
Compatibilidad con esquemas técnicos en 3D y resultados interactivos
Los PDF modernos suelen incluir esquemas técnicos en 3D o interactivos. Ampliar la herramienta para detectarlos y extraerlos, y posiblemente renderizarlos como modelos 3D interactivos en la aplicación web con bibliotecas como Three.js, aportaría valor. Esto requiere algoritmos que analicen los datos 3D incrustados en los PDF y los rendericen de forma dinámica.
-
Compatibilidad multiplataforma e implementación en la nube
La instalación manual de dependencias (p. ej., wkhtmltopdf, Tesseract) puede resultar complicada para los usuarios. Contenerizar la aplicación con Docker simplificaría la implementación multiplataforma. Además, implementar la herramienta como un servicio en la nube en AWS o Google Cloud permitiría a los usuarios procesar archivos PDF sin configuración local, lo que la haría más accesible.
Conclusión
El proceso de extracción de esquemas técnicos del PDF Schematic Extractor ha mejorado de forma significativa gracias a los avances en detección, etiquetado, preprocesamiento y asistencia al usuario. Estos cambios han hecho que la herramienta sea más exacta, más eficiente y más fácil de usar. De cara al futuro, integrar aprendizaje automático, procesamiento en tiempo real, LLM/SLM locales e implementación en la nube puede ampliar aún más las capacidades de la herramienta y convertirla en una solución versátil para la extracción de esquemas técnicos en casos de uso muy diversos.
Si tiene preguntas o comentarios, no dude en escribir a: yagnesh.mangali@atronous.ai