Comment extraire du texte d'un PDF? [fermé]

est-ce que quelqu'un peut recommander une bibliothèque/API pour extraire le texte et les images d'un PDF? Nous devons être en mesure d'obtenir le texte qui est contenu dans les régions pré-connues du document, de sorte que L'API devra nous donner des informations de position de chaque élément sur la page.

nous aimerions que ces données soient produites dans le format xml ou json . Nous sommes actuellement à la recherche de PdfTextStream qui semble assez bon, mais voudrait entendre expériences et suggestions d'autres peuples.

Existe-t-il des alternatives (commerciales ou gratuites) pour extraire du texte d'un pdf de manière programmatique?

123
demandé sur Jonathan 2010-09-06 15:11:08

15 réponses

on m'a donné un fichier pdf de 400 pages avec une table de données que j'ai dû importer - heureusement pas d'images. Ghostscript a 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 enlever des lignes vierges, etc, et sucer dans les 30.000 enregistrements. -dSIMPLE et -dCOMPLEX ne font aucune différence dans ce cas.

80
répondu user2176753 2016-09-12 14:58:02

depuis aujourd'hui je le sais: la meilleure chose pour l'extraction de texte à partir de PDFs est TET, la boîte à outils d'extraction de texte . TET fait partie de la PDFlib.com famille de produits.

PDFlib.com C'est la compagnie de Thomas Merz. Au cas où vous ne reconnaîtriez pas son nom: Thomas Merz est l'auteur de "PostScript and PDF Bible".

la première incarnation de TET est a bibliothèque . Que L'on peut probablement faire tout Budda006 voulu, y compris des informations de Position sur chaque élément sur la page. Oh, et il peut aussi extraire des images. Il recombine des images fragmentées en morceaux.

pdflib.com offre également une autre incarnation de cette technologie, le TET plugin for 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 boissons sont gratuites (comme la bière) et peuvent être utilisées à 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 où d'autres outils (y compris Adobe) ne crachent les ordures que.

je viens de tester l'outil de bureau autonome, et ce qu'ils disent sur leur page web est vrai. Il a une très bonne ligne de commande. Certains de mes "problematic" PDF test files l'outil manipulé à ma pleine satisfaction.

cette chose sera désormais ma recommandation pour toutes les exigences sophistiquées et difficiles D'extraction de texte PDF.

TET est tout simplement génial. Il détecte les tables. À l'intérieur des tableaux, il identifie des cellules couvrant plusieurs colonnes. Il identifie les lignes de table et le contenu de chaque cellule de table séparément. Il traite très bien les traits d'Union: il élimine les traits d'Union et les restaure. des mots complets. Il prend en charge les langues non-ASCII (y compris le CJK, l'arabe et l'Hébreu). En rencontrant des ligatures, il restaure les caractères originaux...

essayez.

32
répondu Kurt Pfeifle 2010-09-15 23:25:40

un outil de ligne de commande efficace, open source, gratuit, disponible sur linux et windows : simplement appelé pdftotext. Cet outil fait partie de la bibliothèque xpdf.

http://en.wikipedia.org/wiki/Pdftotext

21
répondu 131 2016-07-29 06:47:13

pour python, il y a PDFMiner et pyPDF2 . Pour plus d'informations sur ceux-ci, voir module Python pour la conversion de PDF en texte .

21
répondu Jonathan 2017-05-23 10:31:34

voici ma suggestion. Si vous souhaitez extraire du texte à partir de PDF, vous pouvez importer le fichier pdf dans Google Docs, puis l'exporter dans un format plus convivial tels que .HTML. ,odf,.rtf,.txt, etc. Tout cela en utilisant l'API de lecteur. Il est gratuit* et robuste. Regardez:

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és ci-dessus ont des exemples de travail pour de nombreuses langues, y compris: Java, .NET, Python, PHP, Ruby, et d'autres.

j'espère que ça aidera.

8
répondu user2070775 2013-12-10 17:02:42

PdfTextStream (que vous avez dit que vous avez regardé) est maintenant libre pour les applications filetées simples. À mon avis, sa qualité est beaucoup mieux que d'autres bibliothèques (esp. pour des choses comme le funky polices de caractères, etc).

alternativement, vous devriez avoir un regard à Apache PDFBox , open source.

7
répondu Renaud 2012-09-16 20:22:47

Docotic.La bibliothèque Pdf peut être utilisée pour extraire du texte à partir de fichiers PDF en texte brut ou comme une collection de morceaux de texte avec des coordonnées pour chaque morceau.

Docotic.Pdf peut être utilisé pour extraire des images de PDFs , aussi.

clause de non-responsabilité: je travaille pour Bit Miracle.

6
répondu Bobrovsky 2012-05-17 06:12:49

un des commentaires ici utilisé gs sur Windows. J'ai eu un certain succès avec cela sur Linux / OSX aussi, avec la syntaxe suivante:

gs \
 -q \
 -dNODISPLAY \
 -dSAFER \
 -dDELAYBIND \
 -dWRITESYSTEMDICT \
 -dSIMPLE \
 -f ps2ascii.ps \
 "${input}" \
 -dQUIET \
 -c quit

j'ai utilisé dSIMPLE au lieu de dCOMPLEX parce que ce dernier produit 1 caractère par ligne.

6
répondu kvz 2015-06-15 10:59:09

clause de non-responsabilité: je travaille pour ByteScout

comme la question est spécifiquement sur les outils alternatifs pour obtenir des données de PDF comme XML donc vous pouvez être intéressé à jeter un oeil à l'outil commercial " ByteScout PDF Extractor SDK " qui est capable de faire exactement cela: extrait du texte de PDF XML comme avec les données de positionnement (x,y) et les informations de police:

texte dans le source PDF:

Products | Units | Price 

sortie XML:

 <row>
 <column>
  <text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="212" y="126" width="47" height="11">Products</text> 
  </column>
 <column>
  <text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="428" y="126" width="27" height="11">Units</text> 
  </column>
 <column>
  <text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="503" y="126" width="26" height="11">Price</text> 
  </column>
</row>

P. S.: d'autres il rompt également le texte dans un tableau en fonction de la structure.

4
répondu Eugene M 2015-02-11 08:14:47

pour l'extraction d'image, pdfimages est un outil en ligne de commande libre pour Linux ou Windows (win32):

pdfimages: Extraire et Enregistrer des Images à Partir d'Un Format de Document Portable ( PDF ) Fichier

2
répondu Sun 2013-02-18 22:45:15

Apache pdfbox a cette caractéristique - la partie texte est décrite 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

les cas de test TestPdfIndexer.testExtracting montre comment ça marche

2
répondu Wolfgang Fahl 2014-03-07 15:21:10

la meilleure chose à laquelle je pense 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 son sous-répertoire lib . Essayez ceci (sous Windows):

gswin32c.exe ^
   -q ^
   -sFONTPATH=c:/windows/fonts ^
   -dNODISPLAY ^
   -dSAFER ^
   -dDELAYBIND ^
   -dWRITESYSTEMDICT ^
   -dCOMPLEX ^
   -f ps2ascii.ps ^
   -dFirstPage=3 ^
   -dLastPage=7 ^
   input.pdf ^
   -dQUIET ^
   -c quit

cette commande traite les pages 3-7 de input.pdf . Lisez les commentaires dans le fichier ps2ascii.ps lui-même pour voir ce que les nombres" bizarres " et les infos supplémentaires signifient ( ils indiquent les chaînes, les positions, les largeurs, les couleurs, les images, les rectangles, les polices et les sauts de page... ). Pour obtenir une sortie de texte "simple", remplacer la partie -dCOMPLEX par -dSIMPLE .

1
répondu Kurt Pfeifle 2010-09-07 00:13:57

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 procès de 30 jours.

1
répondu Andrew Cash 2010-09-07 14:46:53

je sais que ce sujet est assez ancien, mais il est encore en vie. J'ai lu de nombreux documents, forum et script et construire un nouveau avancé qui soutient comprimé et non comprimé pdf:

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 toujours

1
répondu Sebastien Malot 2013-08-08 10:04:49

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 le "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, et puis à partir du menu Fichier, je choisis "Enregistrer sous texte...", donnez-lui un nom et où l'enregistrer, cliquez sur "Enregistrer", et je suis fait.

-1
répondu Dick Guertin 2015-01-12 05:24:29