El análisis de un pdf (secuencia de comandos de Devanagari) con PDFminer da un resultado incorrecto

Estoy tratando de analizar un archivo pdf que contiene una lista de votantes indios que está en hindi (guión de Devanagari).

El PDF muestra todo el texto correctamente, pero cuando intenté volcar este pdf en formato de texto usando PDFminer, genera los caracteres que son diferentes de los originales del pdf.

Por ejemplo, la palabra mostrada / correcta es सामान्य

Pero la palabra de salida es

Ahora quiero saber por qué sucede esto y cómo analizar correctamente este tipo de archivo pdf

También estoy incluyendo el archivo pdf de muestra

http://164.100.180.82/Rollpdf/AC276/S24A276P001.pdf

Este problema es muy similar al que se analiza en esta respuesta , y la apariencia del documento de ejemplo allí también recuerda el documento aquí .

Al igual que en el caso del documento en esa otra pregunta, el mapa ToUnicode de la fuente del script Devanagari utilizado en el documento aquí asigna múltiples glifos completamente diferentes a puntos de código Unicode idénticos. Por lo tanto, la extracción de texto basada en esta asignación está destinada a fallar, y la mayoría de los extractores de texto se basan en esta información, especialmente en ausencia de una entrada de encoding de fuente como aquí.


Algunos extractores de texto pueden usar la asignación de glifos a Unicode contenida en el progtwig de fuente incrustado (si está presente). Pero al verificar este mapeo en el progtwig de fuente de script Devanagari utilizado en el documento aquí, resulta que asocia la mayoría de los glifos con U + f020 a través de U + f062 llamado “uniF020”, etc.

Compact UnicodeBmp

Estos puntos de código Unicode se encuentran en el área de uso privado de Unicode , es decir, no tienen un significado estandarizado, pero las aplicaciones pueden usarlos como deseen.

Por lo tanto, los extractores de texto que usan el mapeo Unicode contenido en el progtwig de fonts tampoco entregarían texto inmediatamente inteligible.


Sin embargo, hay un hecho que puede ayudarlo a automatizar en gran medida la extracción de texto de este documento: se hace referencia al mismo objeto PDF para la fuente del script Devanagari en varias páginas, así que en todas las páginas que hacen referencia al mismo objeto PDF el mismo identificador de carácter original o el mismo progtwig de fuente de uso privado Punto de código Unicode se refiere al mismo símbolo visual. En el caso de su documento solo conté 5 copias de la fuente.

Por lo tanto, si encuentra un extractor de texto que devuelve el identificador de caracteres (ignorando todos los mapas de Uticode) o devuelve los puntos de código Unicode del área de uso privado del progtwig de fonts, puede usar su salida y simplemente reemplazar cada entrada de acuerdo con algunos mapas.


Todavía no tenía uso para tal extractor de texto, por lo que no conozco ninguno en el contexto de Python. Pero quién sabe, probablemente a pdfminer o cualquier otro paquete similar se le puede decir (mediante alguna opción) que ignore el mapa engañoso de ToUnicode y luego lo use como se describe anteriormente.