¿Cuáles son las diferencias importantes y las similitudes subyacentes entre los convertidores de PDF a texto como Poppler y xpdf?

A diferencia de un documento de Word o HTML, que tiene contenido organizado en una estructura jerárquica lógica: las palabras, líneas, párrafos, bloques, artículos, archivos PDF consisten efectivamente en una lista de instrucciones para “dibujar este texto en esta posición con estos atributos”.

p.ej. dibujar (10, 20, “Hola”), dibujar (10, 40, “Mundo”)

Esto proporciona consistencia de diseño en diferentes visores y en diferentes dispositivos, pero significa que si desea extraer texto de un PDF, debe intentar recuperar la estructura lógica original de estas instrucciones.

Hay varias formas de abordar esto. Por ejemplo, un algoritmo podría proceder ‘de abajo hacia arriba’, donde el software toma instrucciones de dibujo de texto e intenta combinarlas para formar palabras, luego líneas y luego párrafos. Otro enfoque sería ‘de arriba hacia abajo’, donde la página se divide primero en columnas (por ejemplo, encontrando grandes espacios verticales en la página), luego párrafos, luego líneas, luego palabras. Existen otras técnicas e híbridos de los anteriores.

Algunos convertidores adoptan un enfoque más basado en principios (por ejemplo, dividir la página en columnas, dividir columnas en bloques, …), otros han evolucionado con el tiempo de una manera más ad-hoc. La extracción de texto de Xpdf cayó en la categoría ‘ad-hoc’ la última vez que miré. Creo que la extracción de texto de Poppler fue reescrita de la heredada de Xpdf.

El problema es similar al desafío de convertir imágenes escaneadas en texto mediante OCR, una vez que el software OCR ha superado el paso inicial de reconocer caracteres individuales y combinarlos en palabras.