2009-10-22 9 views
1

connaissez-vous une bibliothèque Java, avec laquelle je peux extraire le texte d'un document PDF sous forme de chaîne et qui préserve également toutes les lignes vides et espaces vides le document original (tel qu'il apparaît dans le document pdf)? J'utilise maintenant la classe PDFTextStripper de la bibliothèque PDFBox-0.7.3, et j'utilise la méthode getText(), qui renvoie le document sous forme de chaîne, mais elle supprime également toutes les lignes vides, tabulations et des espaces vides entre le texte. Les nouvelles lignes sont conservées, donc je peux reconnaître la structure du document, cependant, il est important pour moi de garder les autres choses vides aussi. C'est le comportement par défaut de getText(), et il semble qu'il n'est pas possible de le faire fonctionner de manière à préserver les parties vides du texte (je n'ai trouvé aucune méthode dans l'API à cette fin).Une bibliothèque Java pour l'extraction de texte à partir de documents PDF préservant des espaces et des lignes vides

Nous vous remercions de votre aide.

Répondre

2

Etes-vous sûr qu'il y a des sauts de ligne, des tabulations, des espaces dans le document? La plupart des fichiers PDF que j'ai rencontrés utilisaient le positionnement pour l'espacement et l'indentation. Ainsi, plutôt que d'inclure des sauts de ligne et des tabulations, l'objet texte est simplement placé plus bas sur la page et décalé. Dans ce cas PDFBox ne supprime rien du texte, les espaces ne sont jamais là.

Si vous n'avez pas encore consulté la source PDF, cela pourrait être utile. S'il est compressé, vous pouvez utiliser MultivalentUncompress pour le rendre lisible. Le PDF specification décrit les opérateurs de positionnement de texte dans la section 9.4.2.

1

J'ai eu le même problème et l'ai résolu en étendant la classe TextStripper et en ajoutant des coordonnées devant chaque ligne (n'était pas facile cependant). Pour votre problème, vous pouvez ajouter des coordonnées à chaque mot, par ex. en ne renvoyant pas les chaînes, mais une liste d'objets propres (classe avec le mot, x et y). Ainsi vous seriez capable de reconstruire des tabulations et des espacements multiples à partir des coordonnées après.

Greetz, Ghad

+0

Avez-vous encore ce travail quelque part? J'ai vraiment besoin de quelque chose comme ça. Pourriez-vous s'il vous plaît fournir cela? Merci! – Softy

+0

Sry non, j'avais le code sur de vieux disques durs mais comme j'ai arrêté de travailler pour l'entreprise il y a quelques années, je n'en avais plus besoin. – GHad

0

Vous pouvez également utiliser JPedal pour l'extraction de texte. Il se peut qu'il n'y ait pas d'espaces dans le texte - rappelez-vous que le format PDF est un format d'affichage ...

1

Vous voudrez peut-être essayer notre bibliothèque PDFTextStream. Nous essayons très dur de maximiser la fidélité du texte extrait par PDFTextStream par rapport à sa présentation affichée, de sorte que l'espacement et ceux-ci soient maintenus autant que possible. Il y a aussi quelques modes d'extraction optionnels (différentes implémentations de l'interface OutputHandler, en fait) qui vous permettent de contrôler comment le texte extrait est formaté, ce qui affecte certainement l'espacement et autres.

Questions connexes