2017-08-08 1 views
1

J'ai une question à propos de pdfbox 1.8.13. J'essaie de lire dans le texte entier d'un document de pdf d'une page. Adobe Reader peut faire le travail, pdfbox lit presque toute la page mais brouille les deux premières lignes du document et les deux dernières lignes du document afin que les lettres soient interchangées.Les lettres de deux lignes sont interchangées, Adobe Reader peut faire le travail

Est-ce que quelqu'un sait comment résoudre un tel problème? Tout d'abord, où puis-je demander comment puis-je partager le PDF avec vous? Troisièmement, quelqu'un a-t-il la possibilité de vérifier si le problème existe aussi dans la version 2.0.7 de pdfbox, ce qui est complètement différent? implémenter?

Nous vous remercions d'avance pour votre aide Stephan

Adobe Reader:

ScalableCapitalHRB217778,AmtsgerichtMünchenSeite1von1 
VermögensverwaltungGmbHUSt-IdNr.DE300434774 
Prinzregentenstr. 
48Geschäftsführung:80538München 
ErikPodzuweit,FlorianPrucker 

PDFBox:

SVecramlaöbgleenCsavpeitrawlaltung GmbH UHSRtB-I2d1N7r7.7D8E,3A0m0t4s3g4e7ri7c4ht München Seite 1 von 1 
8P0ri5n3zr8egMeünntcehnesntr. 48 GEreikscPhoädftzsufwüheritu,nFglo: rian Prucker 

Lien vers le PDF (j'ai vérifié que le problème est le même avec le PDF non modifié et modifié que j'ai téléchargé):

https://wetransfer.com/downloads/5930649bce9a1d1a686a0da63f1b9bce20170808071518/9b9140

P.S .: En attendant, j'ai également essayé la version PDDocument.loadNonSeq dans pdfbox 1.8.13 mais cela a entraîné le même problème.

+1

Téléchargez le PDF dans un partage, puis affichez le lien, par exemple, boîte de dépôt, google drive , wikisend, fichier dropper, etc –

+1

Vous pouvez également tester avec l'application de ligne de commande ExtractText. Il suffit de télécharger pdfbox-app à partir du site de téléchargement. –

+1

C'est définitivement mieux avec 2.0.7. L'API pour l'extraction de texte simple est la même. –

Répondre

1

Merci à tilman-hausherr pour vos conseils utiles. Avec eux, j'ai réussi à déboguer mon problème.

Vous aviez raison de laisser de côté l'option de tri (je ne sais pas pourquoi il était utilisé auparavant dans le projet sur lequel je travaille maintenant) résolu le problème de brouillage même en pdfbox-1.8.13. Et vous aviez raison que le résultat de l'extraction de texte en utilisant pdfbox-2.0.7 donnait des résultats encore meilleurs.

Les extraits de code Java pertinentes que j'utilisais avec pdfbox-1.8.13 étaient:

import org.apache.pdfbox.pdmodel.PDDocument; 
import org.apache.pdfbox.util.PDFTextStripper; 
... 
PDDocument doc = PDDocument.load(file); 
PDFTextStripper textStripper = new PDFTextStripper(); 
textStripper.setSortByPosition(true); 
String text = textStripper.getText(doc); 

Si je comprends bien, l'API pour l'extraction de texte simple allant de pdfbox-1.8.13 à pdfbox-2.0.7 est pas la même chose, mais très similaire, le PDFTextStripper vient d'être déplacé de util à text:

import org.apache.pdfbox.pdmodel.PDDocument; 
import org.apache.pdfbox.text.PDFTextStripper; 
... 
PDDocument doc = PDDocument.load(file); 
PDFTextStripper textStripper = new PDFTextStripper(); 
// textStripper.setSortByPosition(true); 
String text = textStripper.getText(doc); 

pour en savoir de tout cela, comme vous avez dit la commande l outil ine a été très utile et voici les résultats de l'extraction de texte avec les différentes options (https://pdfbox.apache.org/1.8/commandline.html et https://pdfbox.apache.org/2.0/commandline.html):

java jar PDFBox-app-1.8.13.jar ExtractText -sort "20170801 Rechnung.pdf":

SVecramlaöbgleenCsavpeitrawl HRBPrinzregentenstra.l4tu8ng GmbH GUSest-I 
2d1N7r7.7D8E,3A0m0t4s3g4e7ri7c4ht München Seite 1 von 1 
80538 München ErikcPhoädftzsufwüheritu,nFglo: rian Prucker 

java jar PDFBox-app-1.8.13.jar ExtractText "20170801 Rechnung.pdf":

Scalable CapitalVermögensverwaltung GmbHPrinzregentenstr. 4880538 München 
HRB 217778, Amtsgericht MünchenUSt-IdNr. DE300434774Geschäftsführung:Erik 
Podzuweit, Florian Prucker 
Seite 1 von 1 

java jar PDFBox-app-2.0.7.jar ExtractText -sort " 20170801 Rechnung.pdf ":

Scalable Capital HRB 217778, Amtsgericht München Seite 1 von 1 
Vermögensverwaltung GmbH USt-IdNr. DE300434774 
Prinzregentenstr. 48 Geschäftsführung: 
80538 München Erik Podzuweit, Florian Prucker 

java jar PDFBox-app-2.0.7.jar ExtractText "20170801 Rechnung.pdf"

Scalable Capital 
Vermögensverwaltung GmbH 
Prinzregentenstr. 48 
80538 München 
HRB 217778, Amtsgericht München 
USt-IdNr. DE300434774 
Geschäftsführung: 
Erik Podzuweit, Florian Prucker 
Seite 1 von 1 

Je pense pdfbox-2.0.7 donne les plus beaux résultats dans ce cas, en particulier sans l'option -sort, même si je ne sais pas pourquoi les algorithmes se comportent différemment, puisque pdfbox-1.8.3 a donné le même résultat avec ou sans l'option -nonSeq

+1

S'il est vrai que vos documents utilisant l'option 'sort' ne sont pas une bonne idée, les lecteurs de cette réponse doivent savoir qu'il existe également de nombreux fichiers PDF dont * sans * cette option aboutit à un non-sens total. – mkl

+0

Pouvez-vous expliquer pourquoi c'est ou si l'on peut demander au créateur du PDF de corriger/modifier ce comportement? – stephanmunich

+0

* "pourquoi c'est" * - PDF est à l'origine un format pour * afficher * les documents de manière identique sur toutes les plates-formes. Des fonctionnalités supplémentaires telles que * l'extraction de texte * sont facultatives. * "corriger ce comportement" * - c'est difficile car le comportement n'est pas incorrect pour commencer, voir ci-dessus. * "modifier ce comportement" * - vous pouvez demander au créateur de créer des PDF correctement étiquetés afin que vous puissiez appliquer l'extraction de texte en fonction des informations de marquage. – mkl