¿Desea extraer texto de archivos PDF que ya contienen texto? (es decir, podría copiar y pegar piezas) ¿O está buscando reconocer el texto que está en el contenido de la imagen?
Finalmente, use pdftotext, un paquete que viene con el paquete xpdf:
pdftotext Some_Document.pdf Some_Document.txt
El primer nombre de archivo es un PDF existente; El segundo es el destino. Los resultados fueron mucho mejores que con una versión (ciertamente antigua) de Adobe Acrobat. Editar: las nuevas versiones (2019) de Adobe Acrobat han mostrado resultados igualmente pobres.
Creo que xquartzno es necesario para las herramientas de la consola xpdf. Además, existe una popplerbifurcación xpdfque parece mantenerse mucho más activa: github.com/scraperwiki/scraperwiki-python/issues/…
El comando, al menos como lo instaló HomeBrew, es solo "pdftotext".
Flash Sheridan
@FlashSheridan ¿Puedo animarlo a publicar una respuesta que cubra "pdftotext" y cómo instalarlo a través de homebrew? Los comentarios pueden borrarse en cualquier momento (y tampoco aparecer en las búsquedas).
nohillside
4
La versión actual de Adobe Reader (11.0.09) tiene un elemento "Guardar como otro" en su menú Archivo.
Una de las opciones es Texto .
La aplicación es gratuita y hace un trabajo decente al generar archivos de texto. Todas las imágenes del nuevo documento se perderán con el formato .txt.
Creo que debería poder copiar y pegar el texto en otro documento. Para seleccionar todo el texto
Abra el PDF en "Vista previa" y
seleccione "Editar | Seleccionar todo"
seleccione "Editar | Copiar"
Vaya a otra aplicación, diga "Editar texto"
elija "Editar | Pegar"
Tenga en cuenta que si intenta hacer esto, y no hay texto pegado, solo un montón de líneas en blanco, intente imprimir su PDF a un PDF nuevo primero, p. Ej.
En Vista previa, elija "Archivo | Imprimir"
En la parte inferior derecha, elija "PDF | Guardar como PDF"
Esto exporta un nuevo PDF.
Ahora intente el proceso anterior con este nuevo PDF. ¡Trabajó para mi!
Si bien esto debería funcionar cuando el documento PDF realmente contiene contenido de texto , no mantiene el formato y, en algunos casos, produce texto basura junto con lo que se consideraría texto deseado. Tenga en cuenta que esto también puede ser igual con otros métodos, pero me pareció importante señalarlo.
user3439894
sin duda, no es perfecto con seguridad, y estoy totalmente de acuerdo con todo lo que has dicho. Solo lo agrego aquí como una opción que he notado antes, que funcionó para mí sin instalar nada en absoluto ;-)
Brad Parks
También estoy de acuerdo en que funciona para la mayoría de los casos, pero los números de página, los detalles de pie de página que no están relacionados con el documento y, lo que es peor: el DESPLAZAMIENTO INFINITO en documentos grandes hacen que esta sea una solución insatisfactoria. Si tuviera menos de 5 páginas, lo consideraría, pero dado que la mayoría de las tablas que necesito son de archivos PDF de sitios de investigación que se niegan a escupir Excel o SQL, esta opción ni siquiera es funcional.
Tmanok
¡Convenido! no es una opción viable para su caso de uso
Brad Parks
1
El siguiente script de Python generará el texto de un documento PDF a un archivo .txt. (Nota: no hay garantía de que el texto esté necesariamente en orden 'lógico' de lectura humana, debido a la forma en que los datos se almacenan en formato PDF).
El script creará archivos de texto para cualquier archivo PDF suministrado como argumentos en la línea de comando (por ejemplo pdf2txt.py myPDF.pdf), o puede usarlo en la acción "Ejecutar script de Shell" de Automator, configurando el tipo de shell en python y Pasar la entrada a "Como argumentos" . Luego puede usarlo como Acción rápida o DropApp.
#!/usr/bin/python
# coding: utf-8
import os, sys
from Quartz import PDFDocument
from CoreFoundation import (NSURL, NSString)
NSUTF8StringEncoding = 4
def pdf2txt():
for filename in sys.argv[1:]:
inputfile =filename.decode('utf-8')
shortName = os.path.splitext(filename)[0]
outputfile = shortName+" text.txt"
pdfURL = NSURL.fileURLWithPath_(inputfile)
pdfDoc = PDFDocument.alloc().initWithURL_(pdfURL)
if pdfDoc :
pdfString = NSString.stringWithString_(pdfDoc.string())
pdfString.writeToFile_atomically_encoding_error_(outputfile, True, NSUTF8StringEncoding, None)
if __name__ == "__main__":
pdf2txt()
Esto funciona de forma inmediata (es decir, ¡no tenía que instalar ninguna biblioteca de Python ni nada!) - Es solo un volcado de texto sin formato, pero a veces eso es lo que necesita: tenga en cuenta que el archivo se guarda en el directorio actual (si se ejecuta desde el línea de comando) y no sale a stdout
Brad Parks
@BradParks Debería guardarse en la misma carpeta que el archivo de entrada: toma la ruta del archivo de los argumentos del comando. ¿Cómo lo estás suministrando?
benwiggy
ahh ... estaba en la misma carpeta, así que nunca me di cuenta de eso, ¡mi única intención real era decir que no llega a stdout y que funciona! ¡Gracias!
Brad Parks
1
Reemplace las dos líneas después de la if pdfDocdeclaración con print(pdfDoc.string()).
benwiggy
¡Oh wow, esta es literalmente la primera vez que la distribución de Apple Python resulta útil para algo! ¡¡Gracias por la respuesta!!
Respuestas:
Estos son los pasos que usé para instalar y usar xpdf a través de Homebrew.
Instala las dependencias de Homebrew:
Instale Homebrew desde su sitio web:
Haz lo que te dice para completar la instalación de Homebrew.
Verifique que Homebrew esté contento y funcionando según las especificaciones.
Luego instale xpdf y sus dependencias:
Finalmente, use pdftotext, un paquete que viene con el paquete xpdf:
El primer nombre de archivo es un PDF existente; El segundo es el destino. Los resultados fueron mucho mejores que con una versión (ciertamente antigua) de Adobe Acrobat. Editar: las nuevas versiones (2019) de Adobe Acrobat han mostrado resultados igualmente pobres.
fuente
xquartz
no es necesario para las herramientas de la consolaxpdf
. Además, existe unapoppler
bifurcaciónxpdf
que parece mantenerse mucho más activa: github.com/scraperwiki/scraperwiki-python/issues/…Múltiples métodos
Use documentos de Google (necesitará una cuenta de Google)
Use Automator (se requiere algo de trabajo)
o una aplicación de App Store, por ejemplo, PDF a texto
fuente
xpdf
que instalé con puertos:contiene:
Hace lo que desea para cualquier archivo PDF que provenga de un archivo de texto (y no de una imagen):
fuente
La versión actual de Adobe Reader (11.0.09) tiene un elemento "Guardar como otro" en su menú Archivo.
Una de las opciones es Texto .
La aplicación es gratuita y hace un trabajo decente al generar archivos de texto. Todas las imágenes del nuevo documento se perderán con el formato .txt.
fuente
Creo que debería poder copiar y pegar el texto en otro documento. Para seleccionar todo el texto
Abra el PDF en "Vista previa" y
Vaya a otra aplicación, diga "Editar texto"
Tenga en cuenta que si intenta hacer esto, y no hay texto pegado, solo un montón de líneas en blanco, intente imprimir su PDF a un PDF nuevo primero, p. Ej.
Ahora intente el proceso anterior con este nuevo PDF. ¡Trabajó para mi!
PD: si tiene Microsoft Word, puede abrir su PDF en Word
fuente
El siguiente script de Python generará el texto de un documento PDF a un archivo .txt. (Nota: no hay garantía de que el texto esté necesariamente en orden 'lógico' de lectura humana, debido a la forma en que los datos se almacenan en formato PDF).
El script creará archivos de texto para cualquier archivo PDF suministrado como argumentos en la línea de comando (por ejemplo
pdf2txt.py myPDF.pdf
), o puede usarlo en la acción "Ejecutar script de Shell" de Automator, configurando el tipo de shell en python y Pasar la entrada a "Como argumentos" . Luego puede usarlo como Acción rápida o DropApp.fuente
if pdfDoc
declaración conprint(pdfDoc.string())
.