pd3f-core
Experimental, úselo con cuidado.
pd3f-core
es un paquete de Python para reconstruir el texto continuo original a partir de archivos PDF con modelos de lenguaje. pd3f-core
asume que su PDF está basado en texto o ya tiene OCRd. pd3f-core
es el corazón de pd3f: un proceso completo de extracción de texto basado en Docker (incluido OCR).
pd3f-core
utiliza por primera vez Parsr para dividir archivos PDF en líneas y párrafos. Luego, utiliza el paquete Python dehyphen para reconstruir los párrafos de la forma más probable. La probabilidad se obtiene calculando la perplejidad con los modelos de lenguaje basados en caracteres de Flair. Se eliminan los guiones innecesarios, se mantienen o eliminan espacios o nuevas líneas dependiendo de las palabras circundantes.
Está desarrollado principalmente para alemán, pero debería funcionar también con otros idiomas. El proyecto aún se encuentra en una etapa temprana. Espere asperezas y cambios rápidos.
Documentación API de pd3f-core: https://pd3f.github.io/pd3f-core/index.html
Documentación de pd3f (el): https://pd3f.com/docs/
Compruebe si se pueden unir dos líneas eliminando guiones ('-').
Decide entre agregar un espacio simple (' ') o una nueva línea ('n') al unir líneas.
Compruebe si se pueden unir el último párrafo de una página y el primer párrafo de la página siguiente.
Para unir párrafos (y revertir saltos de página), detecte notas al pie y conviértalas en notas al final. Por ahora, las notas a pie de página se colocan al final de un archivo.
Si el encabezado o el pie de página son iguales para todas las páginas, muéstrelos solo una vez. Los encabezados se colocan al principio del documento y el pie de página al final. Se utilizan algunas heurísticas basadas en la similitud de los pies de página. (Distancia Jaccard para texto y comparación de formas superpuestas)
pip install pd3f
o
poetry add pd3f
Inicie una instancia local de Parsr:
docker-compose up
(También puede utilizar un túnel para una instancia remota de Parsr (script) o elegir una dirección remota).
from pd3f import extract
text , tables = extract ( file_path , tables = False , experimental = False , force_gpu = False , lang = "multi" , fast = False , parsr_location = "localhost:3001" )
Explicaciones de los parámetros en los documentos: https://pd3f.github.io/pd3f-core/export.html#pd3f.export.extract
El uso de CUDA acelera la evaluación con Flair. Pero necesitas una GPU (cara). Necesita configurar su GPU con CUDA. Aquí una guía para Ubuntu 18.04
conda install pytorch torchvision cudatoolkit=10.2 -c pytorch
(ejemplo)pd3f-core
con poesía: poetry add pd3f
Poetry se da cuenta de que se ejecuta dentro de un entorno virtual conda, por lo que no crea uno nuevo. Dado que configurar CUDA es difícil, instálelo de la forma más sencilla (con conda).
En el corazón de pd3f-core
se encuentra la salida JSON de Parsr. Algunos comentarios sobre cómo y por qué se eligieron ciertas cosas. Documentación de Parsr sobre los diferentes módulos.
Parsr tiene varios módulos para clasificar párrafos en ciertos tipos. Ofrecen detecciones de lista y detección de encabezado. En mi experiencia, la precisión es demasiado baja para ambos, por lo que no la usamos en este momento. Esto también significa que todo el texto extraído (de salida) es plano (sin títulos, diferentes formatos, etc.).
Habilitamos Dibujo + Detección de imágenes porque es posible que necesitemos comprender qué párrafo sigue a cuál otro. Esto puede resultar útil a la hora de decidir si desea unir párrafos. Pero se cae al activar la configuración fast
.
En la salida JSON hay un campo pageNumber
. Esto proviene del módulo de detección de páginas. Entonces pageNumber
se deriva del encabezado/pie de página de cada página. Por lo tanto, puede ser diferente del índice en la matriz de páginas. No transmita el pageNumber
en la salida JSON.
words-to-line-new
se ha utilizado así. No hay error pero la precisión disminuye si se usa de otra manera.
" words-to-line-new " ,
[
" reading-order-detection " ,
No hagas OCR con Parsr porque los resultados son peores que OCRmyPDF (porque este último usa preprocesamiento de imágenes).
Instalar y usar poesía.
Licencia pública general de Affero 3.0