pyPdf pas en mesure d'extraire le texte de quelques pages en PDF de mon
Je suis en train d'utiliser pyPdf pour extraire et imprimer des pages d'un fichier PDF multipage. Le problème est, le texte n'est pas extrait de quelques pages. J'ai mis un fichier d'exemple ici:
http://www.4shared.com/document/kmJF67E4/forms.html
Si vous exécutez ce qui suit, les 81 premières pages de retour pas de texte, tandis que les 11 derniers extraire correctement. Quelqu'un peut-il aider?
from pyPdf import PdfFileReader
input = PdfFileReader(file("forms.pdf", "rb"))
for page in input1.pages:
print page.extractText()
Vous devez vous connecter pour publier un commentaire.
Noter que
extractText()
a encore des problèmes extraire le texte correctement. À partir de la documentation pourextractText()
:Puisque c'est le texte que vous voulez, vous pouvez utiliser la commande Linux
pdftotext
.D'invoquer qu'à l'aide de Python, vous pouvez le faire:
Le texte est extrait de
forms.pdf
et enregistré àoutput
.Cela fonctionne dans le cas de votre fichier PDF et des extraits du texte que vous voulez.
Vous pouvez également essayer les pdfminer bibliothèque (aussi en python), et voir si c'est mieux à extraire le texte. Pour le partage de l'cependant, vous allez avoir à coller avec pyPdf comme pdfminer ne supporte pas que.
Ce n'est pas vraiment une réponse, mais le problème avec pyPdf c'est: il n'est pas encore en charge les CMaps. Le format PDF permet de polices à utiliser CMaps à la carte de caractère IDs (octets dans le fichier PDF) à caractère Unicode codes. Lorsque vous avez un fichier PDF qui contient des caractères non-ASCII, il y a probablement une CMap en cours d'utilisation, et même, parfois, quand il n'y a pas de caractères non-ASCII. Lorsque pyPdf rencontre des chaînes qui ne sont pas dans la norme de codage Unicode, il voit tout un tas de code octet; il ne peut pas convertir ces octets Unicode, de sorte qu'il vous donne juste les cordes à vide. En fait j'ai eu ce même problème et je suis en train de travailler sur le code source pour le moment. C'est beaucoup de temps, mais j'espère que d'envoyer un patch pour le responsable quelque temps autour de la mi-2011.
Je trouve qu'il est parfois utile de le convertir en
ps
(essayez avecpdf2ps
etpdftops
pour les différences de potentiel) puis retour àpdf
(ps2pdf
). Alors tentez votre script d'origine à nouveau.Je commence à penser que je devrais adopter un malpropre deux partie de la solution. il y a deux sections dans le document PDF, pp 1-82 qui ont le texte d'une page d'étiquettes (pdftotext peut extraire), et pp 83-end qui n'ont pas d'étiquettes de page mais pyPDF peut extraire explicitement sait pages.
Je pense que j'ai besoin de combiner les deux. Maladroit, mais je ne vois pas d'autre solution. Malheureusement, je vais devoir le faire sur une machine Windows.
J'ai eu le même problème avec certains fichiers pdf et windows, ce travail est excellent pour moi:
1.- Télécharger Xpdf outils pour windows
2.- copie pdftotext.exe de xpdf-outils-win-4.00\bin32 à C:\Windows\System32 et aussi pour C:\Windows\SysWOW64
3.- utiliser des sous-processus de commande exécuter à partir de la console: