Comment extraire du texte d'un PDF?
Peut-on recommander une bibliothèque/API pour extraire le texte et les images à partir d'un PDF?
Nous devons être en mesure d'obtenir au texte qui est contenu dans les pré-connu régions du document, afin de l'API faudra nous donner des informations de position de chaque élément sur la page.
Nous aimerions que les données de sortie dans xml
ou json
format. Nous sommes actuellement à la recherche à PdfTextStream qui semble assez bonne, mais j'aimerais entendre d'autres peuples des expériences et des suggestions.
Sont il des alternatives (commercial ou libre) pour l'extraction de texte à partir d'un fichier pdf par programmation?
- Question connexe: Extraire des Images et des Mots avec les coordonnées et les tailles de fichier PDF
- Pour ceux qui ont besoin de quelque chose de vraiment simple (pas de l'information de position), cette expression rationnelle perl peut suffire:
/^\s*\[?\((.*?)\)\]?\s*T[Jj]/mg
. Il semble juste pour les Tj/TJ de l'opérateur, ce qui dénote tout à fait normal de texte dans un fichier PDF. - utiliser les TomRoush PdfBox cette bibliothèque fonctionne bien sur android
Vous devez vous connecter pour publier un commentaire.
M'a donné un 400 page de fichier pdf avec une table de données que j'avais à l'importation - heureusement, pas d'images. Ghostscript fonctionné pour moi:
gswin64c -sDEVICE=txtwrite -o output.txt input.pdf
Le fichier de sortie a été divisé en pages avec des en-têtes, etc., mais il était alors facile d'écrire une application pour éliminer les lignes vides, etc, et à le sucer dans les 30 000 enregistrements.
-dSIMPLE
et-dCOMPLEX
fait pas de difference dans ce cas.gs
au lieu degswin64c
. Fonctionne parfaitement. Pas breveté payé de la merde. Il fonctionne, tout simplement.Depuis aujourd'hui je le sais: la meilleure chose pour l'extraction de texte à partir de fichiers Pdf est TET, l'extraction de texte trousse à outils. TET est une partie de la PDFlib.com la famille de produits.
PDFlib.com est Thomas Merz de la société. Dans le cas où vous ne reconnaissez pas son nom: Thomas Merz est l'auteur de "PostScript et PDF Bible".
TET de première incarnation est bibliothèque. Que l'on peut probablement faire tout ce Budda006 voulait, y compris des informations de position au sujet de chaque élément sur la page. Oh, et il peut aussi extraire des images. Il recompose les images qui sont fragmentés en morceaux.
pdflib.com propose également une autre incarnation de cette technologie, les TET plugin pour Acrobat. Et la troisième incarnation est le PDFlib TET iFilter. C'est un outil autonome pour les postes de travail des utilisateurs. Ces deux sont gratuits (comme la bière) pour usage à des fins privées, à des fins non commerciales.
Et c'est vraiment puissant. Meilleur que celui d'Adobe extraction de texte. Il extrait du texte pour moi, là où d'autres outils (y compris Adobe) faire cracher les ordures seul.
Je viens de tester le bureau autonome de l'outil et de ce qu'ils disent sur leur page web est vrai. Il a une très bonne ligne de commande. Certains de mes "problèmes" PDF fichiers de test de l'outil manipulé à mon entière satisfaction.
Cette chose sera désormais ma recommandation pour chaque complexe et difficile PDF extraction de texte exigences.
TET est tout simplement génial. Il détecte les tables. À l'intérieur des tables, il identifie les cellules s'étendant sur plusieurs colonnes. Il identifie les lignes de la table et le contenu de chaque cellule du tableau séparément. Il traite très bien avec hyphenations: il élimine les traits d'union et restaure des mots complets. Il prend en charge non-ASCII langues (y compris CJK, l'arabe et l'hébreu). Lors de la rencontre des ligatures, il rétablit les caractères d'origine...
Lui donner un essai.
pdftotext
de la section. Mais j'insiste pour que vous vous ajoutez le-layout
param...Un efficace outil de ligne de commande, open source, libre de toute redevance, disponible sur linux & windows : il vous suffit nommé pdftotext. Cet outil est une partie de la xpdf de la bibliothèque.
http://en.wikipedia.org/wiki/Pdftotext
-layout
passer à préserver les tables, fonctionne assez bien.Pour python, il n'y a PDFMiner et pyPDF2. Pour plus d'information, voir Module Python pour convertir PDF en texte.
PdfTextStream (qui vous dit que vous avez été à la recherche à l') est maintenant gratuit pour les mono-thread applications. À mon avis, sa qualité est beaucoup mieux que d'autres bibliothèques (esp. pour des choses comme le funky polices de caractères, etc).
Sinon, vous devriez jeter un oeil à Apache PDFBox, l'open source.
Voici ma suggestion.
Si vous voulez extraire le texte d'un PDF, vous pouvez importer le fichier pdf dans Google Docs, puis l'exporter vers un format plus convivial comme .html, .odf, .rtf, .txt, etc). Tout cela en utilisant le Lecteur de l'API. Il est gratuit* et robuste. Jetez un oeil à:
https://developers.google.com/drive/v2/reference/files/insert https://developers.google.com/drive/v2/reference/files/get
Parce que c'est une API rest, il est compatible avec TOUS les langages de programmation. Les liens que j'ai posté aboove avoir des exemples de travail pour de nombreuses langues, y compris: Java, .NET, Python, PHP, Ruby, et d'autres.
J'espère que cela aide.
Docotic.Pdf library peut être utilisé pour extraire le texte d'un PDF fichiers en texte brut ou comme une collection de morceaux de texte avec les coordonnées de chaque morceau.
Docotic.Pdf peut être utilisé pour extraire des images à partir de fichiers Pdf, trop.
Disclaimer: je travaille pour Peu Miracle.
L'un des commentaires ici utilisé gs sur Windows. J'ai eu un certain succès avec que sur Linux/OSX trop, avec la syntaxe suivante:
J'ai utilisé
dSIMPLE
au lieu dedCOMPLEX
parce que les dernières sorties 1 caractères par ligne.Que la question est plus précisément sur les autres outils pour obtenir des données de PDF en XML de sorte que vous pouvez être intéressé à prendre un coup d'oeil à l'outil commercial "ByteScout PDF Extractor SDK" qui est capable de faire exactement cela: extraire le texte d'un PDF au format XML avec les données de positionnement (x,y) et la police de l'information:
Texte dans le fichier source:
XML de sortie:
P. S.: en outre, il rompt également le texte dans un tableau en fonction de la structure.
Divulgation: je travaille pour ByteScout
Je sais que ce sujet est assez ancien, mais il est encore en vie. J'ai lu beaucoup de documents, de forum et de script et de construire une nouvelle avancée qui prend en charge compressé et non compressé pdf :
https://gist.github.com/smalot/6183152
Dans certains cas, la ligne de commande est interdit pour des raisons de sécurité.
Ainsi, un natif de la classe PHP peut s'adapter à de nombreux besoins.
Espère que cela aide toujours
La meilleure chose que je peux actuellement penser (dans la liste des "simples" outils) est Ghostscript (la version actuelle est la v. 8.71) et le post-scriptum de l'utilitaire de
ps2ascii.ps
. Ghostscript navires dans sonlib
sous-répertoire. Essayez ceci (sur Windows):Cette commande traite les pages 3 à 7 de l'
input.pdf
. Lire les commentaires dans leps2ascii.ps
fichier lui-même pour voir ce que le "bizarre" des chiffres et d'autres infos moyenne (ils indiquent des chaînes, des positions, des largeurs, des couleurs, des photos, des rectangles, des polices et des sauts de page...). Pour obtenir un "simple" sortie de texte, remplacer le-dCOMPLEX
partie par-dSIMPLE
.Pour l'extraction de l'image, pdfimages est un gratuit outil en ligne de commande pour Linux ou Windows (win32):
pdfimages: Extraire et Enregistrer des Images à Partir d'Un Format de Document Portable ( PDF ) Fichier
Apache pdfbox dispose de cette fonctionnalité - la partie du texte est décrit dans:
http://pdfbox.apache.org/apidocs/org/apache/pdfbox/util/PDFTextStripper.html
pour un exemple de mise en œuvre voir
https://github.com/WolfgangFahl/pdfindexer
le cas de test TestPdfIndexer.testExtracting montre comment il fonctionne
QuickPDF semble raisonnable bibliothèque qui doit faire ce que vous voulez pour un prix raisonnable.
http://www.quickpdflibrary.com/ - Ils avoir un essai de 30 jours.
Sur mon Macintosh, je trouve que "Adobe Reader" fait un assez bon travail. J'ai créé un alias sur mon Bureau qui pointe vers le "Adobe Reader.app", et tout ce que je fais c'est de déposer un fichier pdf sur l'alias, ce qui en fait le document actif dans Adobe Reader, puis à partir du menu Fichier, je choisis "Enregistrer en tant que Texte...", lui donner un nom et où l'enregistrer, cliquez sur "Enregistrer", et je suis fait.