Vous souhaitez extraire du texte à partir de fichiers PDF contenant déjà du texte? (c.-à-d., vous pourriez en copier et coller des morceaux) Ou cherchez-vous à reconnaître du texte contenu dans une image?
Enfin, utilisez pdftotext, un package fourni avec la suite xpdf:
pdftotext Some_Document.pdf Some_Document.txt
Le premier nom de fichier est un PDF existant; le second est la destination. Les résultats étaient bien meilleurs qu'avec une version (certes ancienne) d'Adobe Acrobat. Edit: les nouvelles versions (2019) d'Adobe Acrobat ont montré des résultats tout aussi médiocres.
Je pense que ce xquartzn'est pas nécessaire pour les outils de la console dans xpdf. De plus, il existe une popplerfourchette xpdfqui semble beaucoup plus activement maintenue: github.com/scraperwiki/scraperwiki-python/issues/…
Jeroen Wiert Pluimers
6
Plusieurs méthodes.
Utilisez des documents Google (vous aurez besoin d'un compte Google)
Utiliser Automator (certains travaux sont nécessaires)
Vous pouvez utiliser Automator pour créer un flux de travail qui peut extraire du texte à partir de fichiers PDF et l'enregistrer en tant que texte ou document RTF.
ou une application de l'App Store, par exemple PDF to Text
La commande, au moins telle qu'installée par HomeBrew, est simplement «pdftotext».
Flash Sheridan
@FlashSheridan Puis-je vous encourager à poster une réponse couvrant "pdftotext" et comment l'installer via homebrew? Les commentaires peuvent être supprimés à tout moment (et n'apparaissent pas non plus dans les recherches).
nohillside
4
La version actuelle d' Adobe Reader (11.0.09) comporte un élément "Enregistrer sous un autre" dans son menu Fichier.
L'une des options est le texte .
L'application est gratuite et fait un travail décent de sortie de fichiers texte. Toutes les images du nouveau document seront perdues au format .txt.
Je pense que vous devriez pouvoir copier et coller le texte dans un autre document. Pour sélectionner tout le texte
Ouvrez le PDF dans "Aperçu", et
choisissez "Modifier | Tout sélectionner"
choisissez "Modifier | Copier"
Accédez à une autre application, dites "Modification du texte"
choisissez "Modifier | Coller"
Notez que si vous essayez de le faire et qu'il n'y a pas de texte collé, juste un tas de lignes vides, essayez d'abord d'imprimer votre PDF dans un nouveau PDF, par exemple
Dans Aperçu, choisissez "Fichier | Imprimer"
En bas à droite, choisissez "PDF | Enregistrer au format PDF"
Cela exporte un nouveau PDF.
Essayez maintenant le processus ci-dessus avec ce nouveau PDF. A travaillé pour moi!
Bien que cela devrait fonctionner lorsque le document PDF contient réellement du contenu texte , il ne conserve pas la mise en forme et, dans certains cas, produit du texte incorrect avec ce qui serait considéré comme du texte souhaité. Notez que cela peut également être le même avec d'autres méthodes, mais j'ai pensé qu'il était important de le souligner.
user3439894
sans aucun doute - pas parfait à coup sûr, et je suis totalement d'accord avec tout ce que vous avez dit. Je ne l'ajoute ici que comme une option que j'ai remarquée auparavant, qui a fonctionné pour moi sans rien installer du tout ;-)
Brad Parks
Je conviens également que cela fonctionne dans la plupart des cas, mais les numéros de page, les détails de pied de page qui ne sont pas liés au document et pire encore: le DÉFILAGE INFINI sur les documents volumineux en fait une solution insatisfaisante. Si elle était inférieure à 5 pages, je l'envisagerais, mais étant donné que la plupart des tableaux dont j'ai besoin proviennent de fichiers PDF provenant de sites de recherche qui refusent de cracher Excel ou SQL, cette option n'est même pas fonctionnelle.
Tmanok
D'accord! pas une option viable pour votre cas d'utilisation
Brad Parks
1
Le script python suivant affichera le texte d'un document PDF dans un fichier .txt. (Remarque: Il n'y a aucune garantie que le texte est nécessairement dans un ordre lisible `` logique '' par l'homme, en raison de la façon dont les données sont conservées au format PDF.)
Le script créera des fichiers texte pour tous les fichiers PDF fournis en tant qu'arguments sur la ligne de commande (par exemple pdf2txt.py myPDF.pdf), ou vous pouvez utiliser dans l'action "Exécuter le script shell" d'Automator, en définissant le type de shell sur python et passer l'entrée sur "En tant qu'arguments" . Ensuite, vous pouvez l'utiliser comme une action rapide ou 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()
Cela fonctionne hors de la boîte (c'est-à-dire - n'a pas eu à installer de bibliothèques python ou quoi que ce soit!) - Est juste un vidage brut de texte, mais parfois c'est ce dont vous avez besoin - notez que le fichier est enregistré dans le répertoire en cours (s'il s'exécute à partir de la ligne de commande) et ne sort pas à stdout
Brad Parks
@BradParks Il doit être enregistré dans le même dossier que le fichier d'entrée: il prend le chemin de fichier des arguments de la commande. Comment le fournissez-vous?
benwiggy
ahh ... j'étais dans le même dossier, donc je n'ai jamais remarqué ça - ma seule vraie intention était de dire que ça ne vient pas à stdout, et que ça marche! Merci!
Brad Parks
1
Remplacez les deux lignes après l' if pdfDocinstruction par print(pdfDoc.string()).
benwiggy
Oh wow, c'est comme littéralement la première fois que la distribution Apple Python s'avère utile pour quelque chose !! Merci pour la réponse!!
Réponses:
Voici les étapes que j'ai utilisées pour installer et utiliser xpdf via Homebrew.
Installez les dépendances de Homebrew:
Installez Homebrew à partir de leur site Web:
Faites ce qu'il vous dit de terminer l'installation de Homebrew.
Vérifiez que Homebrew est satisfait et fonctionne conformément aux spécifications.
Installez ensuite xpdf et ses dépendances:
Enfin, utilisez pdftotext, un package fourni avec la suite xpdf:
Le premier nom de fichier est un PDF existant; le second est la destination. Les résultats étaient bien meilleurs qu'avec une version (certes ancienne) d'Adobe Acrobat. Edit: les nouvelles versions (2019) d'Adobe Acrobat ont montré des résultats tout aussi médiocres.
la source
xquartz
n'est pas nécessaire pour les outils de la console dansxpdf
. De plus, il existe unepoppler
fourchettexpdf
qui semble beaucoup plus activement maintenue: github.com/scraperwiki/scraperwiki-python/issues/…Plusieurs méthodes.
Utilisez des documents Google (vous aurez besoin d'un compte Google)
Utiliser Automator (certains travaux sont nécessaires)
ou une application de l'App Store, par exemple PDF to Text
la source
xpdf
que j'ai installé avec des ports:contient:
Il fait ce que vous voulez pour n'importe quel fichier PDF provenant d'un fichier texte (et non d'une image):
la source
La version actuelle d' Adobe Reader (11.0.09) comporte un élément "Enregistrer sous un autre" dans son menu Fichier.
L'une des options est le texte .
L'application est gratuite et fait un travail décent de sortie de fichiers texte. Toutes les images du nouveau document seront perdues au format .txt.
la source
Je pense que vous devriez pouvoir copier et coller le texte dans un autre document. Pour sélectionner tout le texte
Ouvrez le PDF dans "Aperçu", et
Accédez à une autre application, dites "Modification du texte"
Notez que si vous essayez de le faire et qu'il n'y a pas de texte collé, juste un tas de lignes vides, essayez d'abord d'imprimer votre PDF dans un nouveau PDF, par exemple
Essayez maintenant le processus ci-dessus avec ce nouveau PDF. A travaillé pour moi!
PS: Si vous avez Microsoft Word, vous pourrez peut-être ouvrir votre PDF en Word
la source
Le script python suivant affichera le texte d'un document PDF dans un fichier .txt. (Remarque: Il n'y a aucune garantie que le texte est nécessairement dans un ordre lisible `` logique '' par l'homme, en raison de la façon dont les données sont conservées au format PDF.)
Le script créera des fichiers texte pour tous les fichiers PDF fournis en tant qu'arguments sur la ligne de commande (par exemple
pdf2txt.py myPDF.pdf
), ou vous pouvez utiliser dans l'action "Exécuter le script shell" d'Automator, en définissant le type de shell sur python et passer l'entrée sur "En tant qu'arguments" . Ensuite, vous pouvez l'utiliser comme une action rapide ou DropApp.la source
if pdfDoc
instruction parprint(pdfDoc.string())
.