una - ¿Cómo extraer texto de un PDF?
metadata pdf (15)
Apache pdfbox tiene esta característica: la parte de texto se describe en:
http://pdfbox.apache.org/apidocs/org/apache/pdfbox/util/PDFTextStripper.html
para una implementación de ejemplo, consulte https://github.com/WolfgangFahl/pdfindexer
el testcase TestPdfIndexer.testExtracting muestra cómo funciona
¿Alguien puede recomendar una biblioteca / API para extraer el texto y las imágenes de un PDF? Necesitamos poder acceder al texto que está contenido en regiones conocidas del documento, por lo que la API deberá proporcionarnos información posicional de cada elemento en la página.
Nos gustaría que los datos se json
formato xml
o json
. Actualmente estamos viendo PdfTextStream, que parece bastante bueno, pero me gustaría escuchar las experiencias y sugerencias de otras personas.
¿Hay alternativas (comerciales o gratuitas) para extraer el texto de un pdf programáticamente?
Aquí está mi sugerencia. Si desea extraer texto de PDF, puede importar el archivo pdf a Google Docs y luego exportarlo a un formato más amigable como .html, .odf, .rtf, .txt, etc. Todo esto con la API de Drive. . Es gratis * y robusto. Echa un vistazo a:
https://developers.google.com/drive/v2/reference/files/insert https://developers.google.com/drive/v2/reference/files/get
Como es una API de reposo, es compatible con TODOS los lenguajes de programación. Los enlaces que publiqué anteriormente tienen ejemplos de trabajo para muchos idiomas, incluidos: Java, .NET, Python, PHP, Ruby y otros.
Espero que ayude.
Desde hoy lo sé: lo mejor para la extracción de texto de archivos PDF es TET, el kit de herramientas de extracción de texto . TET es parte de la familia de productos PDFlib.com.
PDFlib.com es la compañía de Thomas Merz. En caso de que no reconozca su nombre: Thomas Merz es el autor de la "Biblia PostScript y PDF".
La primera encarnación de TET es una biblioteca . Ese probablemente puede hacer todo lo que Budda006 quería, incluida la información posicional sobre cada elemento en la página. Ah, y también puede extraer imágenes. Reúne imágenes fragmentadas en pedazos.
pdflib.com también ofrece otra encarnación de esta tecnología, el plugin TET para Acrobat . Y la tercera encarnación es el PDFlib TET iFilter . Esta es una herramienta independiente para escritorios de usuarios. Ambos son gratuitos (como en la cerveza) para uso privado, sin fines comerciales.
Y es realmente poderoso. Mucho mejor que la extracción de texto de Adobe. Extrajo texto para mí donde otras herramientas (incluida Adobe) escupían basura solo.
Acabo de probar la herramienta de escritorio independiente, y lo que dicen en su página web es cierto. Tiene una muy buena línea de comandos. Algunos de mis archivos de prueba PDF "problemáticos" que la herramienta manejó a mi entera satisfacción.
De ahora en adelante, esta será mi recomendación para todos los requisitos de extracción de texto en PDF sofisticados y desafiantes.
TET es simplemente increíble. Detecta tablas. Dentro de las tablas, identifica celdas que abarcan varias columnas. Identifica las filas de la tabla y el contenido de cada celda de la tabla por separado. Se trata muy bien con guiones: elimina guiones y restaura palabras completas. Admite lenguajes que no son ASCII (incluidos CJK, árabe y hebreo). Al encontrar ligaduras, restaura los caracteres originales ...
Darle una oportunidad.
En mis sistemas Macintosh, encuentro que "Adobe Reader" hace un trabajo razonablemente bueno. Creé un alias en mi escritorio que apunta a "Adobe Reader.app", y todo lo que hago es soltar un archivo PDF en el alias, que lo convierte en el documento activo en Adobe Reader, y luego en el menú Archivo, Elijo "Guardar como texto ...", le doy un nombre y dónde guardarlo, hago clic en "Guardar", y listo.
Lo mejor que puedo pensar actualmente (dentro de la lista de herramientas "simples") es Ghostscript (la versión actual es v.8.71) y el programa de utilidad PostScript ps2ascii.ps
. Ghostscript lo envía en su subdirectorio lib
. Pruebe esto (en Windows):
gswin32c.exe ^
-q ^
-sFONTPATH=c:/windows/fonts ^
-dNODISPLAY ^
-dSAFER ^
-dDELAYBIND ^
-dWRITESYSTEMDICT ^
-dCOMPLEX ^
-f ps2ascii.ps ^
-dFirstPage=3 ^
-dLastPage=7 ^
input.pdf ^
-dQUIET ^
-c quit
Este comando procesa las páginas 3-7 de input.pdf
. Lea los comentarios en el archivo ps2ascii.ps
para ver qué significan los números "extraños" y las informaciones adicionales ( indican cadenas, posiciones, anchuras, colores, imágenes, rectángulos, fuentes y saltos de página ... ). Para obtener una salida de texto "simple", reemplace la parte -dSIMPLE
por -dSIMPLE
.
Me dieron un archivo pdf de 400 páginas con una tabla de datos que tuve que importar, afortunadamente sin imágenes. Ghostscript funcionó para mí:
gswin64c -sDEVICE=txtwrite -o output.txt input.pdf
El archivo de salida se dividió en páginas con encabezados, etc., pero luego fue fácil escribir una aplicación para quitar líneas en blanco, etc., y absorber los 30,000 registros. -dSIMPLE
y -dCOMPLEX
no hicieron diferencia en este caso.
Para la extracción de imágenes, pdfimages es una herramienta de línea de comandos gratuita para Linux o Windows (win32):
pdfimages: Extraiga y guarde imágenes de un archivo de formato de documento portátil (PDF)
Para python, hay PDFMiner y pyPDF2 . Para obtener más información sobre estos, consulte el módulo de Python para convertir PDF a texto .
QuickPDF parece ser una biblioteca razonable que debe hacer lo que quiera a un precio razonable.
http://www.quickpdflibrary.com/ - Tienen una prueba de 30 días.
Sé que este tema es bastante antiguo, pero esta necesidad aún está viva. Leí muchos documentos, foros y guiones y construí uno nuevo avanzado que soporta PDF comprimido y sin comprimir:
https://gist.github.com/smalot/6183152
En algunos casos, la línea de comando está prohibida por razones de seguridad. Entonces, una clase PHP nativa puede satisfacer muchas necesidades.
Espero que ayude a todos
Una herramienta de línea de comandos eficiente, de código abierto, sin costo alguno, disponible tanto en Linux como en Windows: simplemente llamado pdftotext. Esta herramienta es parte de la biblioteca xpdf.
Uno de los comentarios aquí usó gs en Windows. También tuve cierto éxito con Linux / OSX, con la siguiente sintaxis:
gs /
-q /
-dNODISPLAY /
-dSAFER /
-dDELAYBIND /
-dWRITESYSTEMDICT /
-dSIMPLE /
-f ps2ascii.ps /
"${input}" /
-dQUIET /
-c quit
dSIMPLE
lugar de dCOMPLEX
porque este último genera 1 carácter por línea.
La biblioteca Docotic.Pdf se puede usar para extraer texto de archivos PDF como texto sin formato o como una colección de fragmentos de texto con coordenadas para cada fragmento.
Docotic.Pdf se puede usar para extraer imágenes de archivos PDF , también.
Descargo de responsabilidad: yo trabajo para Bit Miracle.
PdfTextStream (que dijiste que estabas mirando) ahora es gratis para aplicaciones de un solo hilo. En mi opinión, su calidad es mucho mejor que otras bibliotecas (especialmente para cosas como funky embedded fonts, etc.).
Alternativamente, debería echar un vistazo a Apache PDFBox , código abierto.
Descargo de responsabilidad: yo trabajo para ByteScout
Como la pregunta es específicamente sobre herramientas alternativas para obtener datos de PDF como XML , puede interesarle echar un vistazo a la herramienta comercial "ByteScout PDF Extractor SDK" que es capaz de hacer exactamente esto: extraer texto de PDF como XML junto con los datos de posicionamiento (x, y) y la información de la fuente:
Texto en el PDF fuente:
Products | Units | Price
Salida XML:
<row>
<column>
<text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="212" y="126" width="47" height="11">Products</text>
</column>
<column>
<text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="428" y="126" width="27" height="11">Units</text>
</column>
<column>
<text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="503" y="126" width="26" height="11">Price</text>
</column>
</row>
PD: además, también divide el texto en una estructura basada en tablas.