Quelqu'un peut-il recommander une bibliothèque / API pour extraire le texte et les images d'un PDF? Nous devons être en mesure d'obtenir du texte contenu dans des régions pré-connues du document, l'API devra donc nous donner des informations de position de chaque élément de la page.
Nous aimerions que ces données soient sorties au format xml
ou json
. Nous examinons actuellement PdfTextStream qui semble assez bon, mais nous aimerions entendre les expériences et les suggestions d'autres personnes.
Existe-t-il des alternatives (commerciales ou gratuites) pour extraire du texte d'un pdf par programme?
pdf
text
ghostscript
extraction
text-extraction
Budda007
la source
la source
/^\s*\[?\((.*?)\)\]?\s*T[Jj]/mg
. Il recherche simplement l'opérateur Tj / TJ, qui désigne tout le texte normal d'un PDF.Réponses:
On m'a donné un fichier pdf de 400 pages avec un tableau de données que je devais importer - heureusement pas d'images. Ghostscript a fonctionné pour moi:
gswin64c -sDEVICE=txtwrite -o output.txt input.pdf
Le fichier de sortie était divisé en pages avec des en-têtes, etc., mais il était alors facile d'écrire une application pour supprimer les lignes vierges, etc., et aspirer les 30 000 enregistrements.
-dSIMPLE
et-dCOMPLEX
n'a fait aucune différence dans ce cas.la source
gs
place degswin64c
. Fonctionne parfaitement. Aucune merde payante brevetée. Cela fonctionne juste.-sDEVICE=txtwrite
-on? Je ne comprends pas grand-chose après avoir lu Comment utiliser Ghostscript | Sélection d'un périphérique de sortiegswin64c -sDEVICE=txtwrite -o- input.pdf
. Source (légèrement modifiée par moi): gist.github.com/drmohundro/560d72ed06baaf16f191ee8be34526acDepuis aujourd'hui, je le sais: la meilleure chose pour l'extraction de texte à partir de PDF est TET, la boîte à outils d'extraction de texte . TET fait partie de la famille de produits PDFlib.com.
PDFlib.com est la société de Thomas Merz. Au cas où vous ne reconnaissez pas son nom: Thomas Merz est l'auteur de la "Bible PostScript et PDF".
La première incarnation de TET est une bibliothèque . Celui-ci peut probablement faire tout ce que Budda006 voulait, y compris des informations de position sur chaque élément de la page. Oh, et il peut également extraire des images. Il recombine des images qui sont fragmentées en morceaux.
pdflib.com propose également une autre incarnation de cette technologie, le plugin TET pour Acrobat . Et la troisième incarnation est le PDFlib TET iFilter . Il s'agit d'un outil autonome pour les postes de travail des utilisateurs. Les deux sont gratuits (comme dans la bière) à des fins privées et non commerciales.
Et c'est vraiment puissant. Bien mieux que l'extraction de texte d'Adobe. Il a extrait du texte pour moi là où d'autres outils (y compris Adobe) ne crachent que des ordures.
Je viens de tester l'outil autonome de bureau, et ce qu'ils disent sur leur page Web est vrai. Il a une très bonne ligne de commande. Certains de mes fichiers de test PDF "problématiques" ont été traités avec mon entière satisfaction.
Cette chose sera désormais ma recommandation pour toutes les exigences d'extraction de texte PDF sophistiquées et difficiles.
TET est tout simplement génial. Il détecte les tables. À l'intérieur des tableaux, il identifie les cellules couvrant plusieurs colonnes. Il identifie les lignes du tableau et le contenu de chaque cellule du tableau séparément. Il gère très bien les césures: il supprime les tirets et restaure les mots complets. Il prend en charge les langues non ASCII (y compris CJK, l'arabe et l'hébreu). Lors de la rencontre de ligatures, il restaure les caractères d'origine ...
Essaie.
la source
Un outil de ligne de commande efficace, open source, gratuit, disponible à la fois sous Linux et Windows: simplement nommé pdftotext. Cet outil fait partie de la bibliothèque xpdf.
http://en.wikipedia.org/wiki/Pdftotext
la source
-layout
commutateur pour conserver les tables, fonctionne plutôt bien.Pour python, il existe PDFMiner et pyPDF2 . Pour plus d'informations à ce sujet, consultez le module Python pour la conversion de PDF en texte .
la source
Voici ma suggestion. Si vous souhaitez extraire du texte d'un PDF, vous pouvez importer le fichier PDF dans Google Docs, puis l'exporter dans un format plus convivial tel que .html, .odf, .rtf, .txt, etc. Tout cela à l'aide de l'API Drive . C'est gratuit * et robuste. Jeter un coup d'œil à:
https://developers.google.com/drive/v2/reference/files/insert https://developers.google.com/drive/v2/reference/files/get
Comme il s'agit d'une API de repos, elle est compatible avec TOUS les langages de programmation. Les liens que j'ai postés ci-dessus ont des exemples fonctionnels pour de nombreux langages, notamment: Java, .NET, Python, PHP, Ruby et autres.
J'espère que cela aide.
la source
PdfTextStream (que vous avez dit avoir examiné) est maintenant gratuit pour les applications à thread unique. À mon avis, sa qualité est bien meilleure que celle des autres bibliothèques (en particulier pour des choses comme les polices intégrées géniales, etc.).
Sinon, vous devriez jeter un œil à Apache PDFBox , open source.
la source
La bibliothèque Docotic.Pdf peut être utilisée pour extraire du texte à partir de fichiers PDF sous forme de texte brut ou comme une collection de blocs de texte avec des coordonnées pour chaque bloc.
Docotic.Pdf peut également être utilisé pour extraire des images à partir de PDF .
Avertissement: je travaille pour Bit Miracle.
la source
Un des commentaires ici utilisait gs sous Windows. J'ai eu un certain succès avec cela sur Linux / OSX aussi, avec la syntaxe suivante:
J'ai utilisé à la
dSIMPLE
place dedCOMPLEX
parce que ce dernier produit 1 caractère par ligne.la source
Comme la question concerne spécifiquement les outils alternatifs pour obtenir des données de PDF au format XML , vous pourriez être intéressé de jeter un coup d'œil à l'outil commercial "ByteScout PDF Extractor SDK" qui est capable de faire exactement cela: extraire du texte de PDF au format XML avec les données de positionnement (x, y) et les informations de police:
Texte dans le PDF source:
XML de sortie:
PS: en outre, il divise également le texte en une structure basée sur un tableau.
Divulgation: je travaille pour ByteScout
la source
La meilleure chose à laquelle je puisse penser actuellement (dans la liste des outils "simples") est Ghostscript (la version actuelle est v.8.71) et le programme utilitaire PostScript
ps2ascii.ps
. Ghostscript l'envoie dans sonlib
sous-répertoire. Essayez ceci (sous Windows):Cette commande traite les pages 3 à 7 de
input.pdf
. Lisez les commentaires dans leps2ascii.ps
fichier lui-même pour voir ce que signifient les nombres "bizarres" et les informations supplémentaires ( ils indiquent des chaînes, des positions, des largeurs, des couleurs, des images, des rectangles, des polices et des sauts de page ... ). Pour obtenir une sortie texte "simple", remplacez la-dCOMPLEX
pièce par-dSIMPLE
.la source
ps2ascii book.pdf notes.txt
. Si votre document est principalement ASCII, vous avez de la chance.Je sais que ce sujet est assez ancien, mais ce besoin est toujours vivant. J'ai lu de nombreux documents, forums et scripts et en ai construit un nouveau avancé qui prend en charge les pdf compressés et non compressés:
https://gist.github.com/smalot/6183152
Dans certains cas, la ligne de commande est interdite pour des raisons de sécurité. Ainsi, une classe PHP native peut répondre à de nombreux besoins.
J'espère que ça aide tout le monde
la source
Pour l'extraction d'images, pdfimages est un outil de ligne de commande gratuit pour Linux ou Windows (win32):
pdfimages: Extraire et enregistrer des images à partir d'un fichier PDF (Portable Document Format)
la source
Apache pdfbox a cette fonctionnalité - la partie texte est décrite dans:
http://pdfbox.apache.org/apidocs/org/apache/pdfbox/util/PDFTextStripper.html
pour un exemple d'implémentation, voir https://github.com/WolfgangFahl/pdfindexer
le testcase TestPdfIndexer.testExtracting montre comment cela fonctionne
la source
QuickPDF semble être une bibliothèque raisonnable qui devrait faire ce que vous voulez pour un prix raisonnable.
http://www.quickpdflibrary.com/ - Ils ont un essai de 30 jours.
la source
Sur mes systèmes Macintosh, je trouve que "Adobe Reader" fait un assez bon travail. J'ai créé un alias sur mon bureau qui pointe vers "Adobe Reader.app", et tout ce que je fais 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 sous forme de texte ...", je lui donne un nom et où l'enregistrer, je clique sur "Enregistrer" et j'ai terminé.
la source