2009-06-02 7 views
10

Mon objectif est d'extraire le texte et les images d'un fichier PDF tout en analysant sa structure. La portée de l'analyse de la structure n'est pas exhaustive. J'ai seulement besoin d'être capable d'identifier les titres et les paragraphes.Comment extraire des données d'un fichier PDF tout en gardant une trace de sa structure?

J'ai essayé quelques-unes des choses différentes, mais je n'ai pas très loin dans l'un d'eux:

  • Convertir PDF en texte. Cela ne fonctionne pas pour moi car je perds des images et la structure du document.
  • Convertir un fichier PDF en HTML. J'ai trouvé quelques outils qui m'ont aidé avec ceci, et le meilleur jusqu'ici est pdftohtml. L'outil est vraiment bon pour la présentation, mais je n'ai pas réussi à analyser le HTML.
  • Convertir un fichier PDF en XML. Comme ci-dessus.

Quelqu'un a des suggestions sur la façon de résoudre ce problème?

+0

Pourquoi ne vous ont pas été en mesure d'analyser avec succès le html? –

+0

Je veux garder une trace des rubriques, et une façon de le faire était de les identifier par leur style. Certains titres ont des styles mixtes, ce qui crée un peu de problème. – Marcel

Répondre

7

Il n'y a essentiellement pas de solution facile de couper-coller parce que le PDF n'est pas vraiment très intéressé par la structure. Il y a beaucoup d'autres réponses sur ce site qui vous dira les choses beaucoup plus en détail, mais celui-ci devrait vous donner les principaux points:

If identifying text structure in PDF documents is so difficult, how do PDF readers do it so well?

Si vous voulez faire cela en PDF lui-même (où vous le feriez avoir la majorité du contrôle sur le processus), vous devrez boucler tout le texte sur les pages et identifier les en-têtes en regardant leurs propriétés de texte (polices utilisées, taille par rapport à l'autre texte de la page, etc ...). En plus de cela, vous devrez également identifier les paragraphes en regardant le positionnement des fragments de texte, les espaces blancs sur la page, la proximité de certaines lettres, mots et lignes ... PDF par lui-même n'a même pas un concept pour un "mot", sans parler des "lignes" ou des "paragraphes". Pour compliquer encore plus les choses, la façon dont le texte est dessiné sur la page (et donc l'ordre dans lequel il apparaît dans le fichier PDF lui-même) ne doit même pas être l'ordre de lecture correct (ou ce que nous ferions considérez être un bon ordre de lecture).

1

Vous pouvez faire utiliser l'approche suivante comme celui-ci avec iTextSharp ou d'autres bibliothèques open source:

  • Lire fichier PDF avec des iTextSharp ou similaires outils open source et de recueillir tous les objets texte dans un tableau (ou convertir des fichiers PDF HTML en utilisant l'outil comme pdftohtml puis analyser HTML)
  • Trier tous les objets texte en coordonnées afin que vous les aurez tous ensemble
  • itérer ensuite, à travers des objets et vérifier la distance entre eux pour voir si 2 ou plusieurs objets peuvent être fusionné en un paragraphe ou non

Ou vous pouvez utiliser l'outil commercial comme ByteScout PDF Extractor SDK qui est capable de faire exactement ceci:

  • texte extrait et des images ainsi que l'analyse de la mise en page du texte
  • XML ou CSV où les objets texte sont fusionnés ou découpés en paragraphes dans une grille de présentation virtuelle
  • d'accéder à des objets via une API spéciale qui permet d'adresser chaque objet via son index de ligne et de colonne "virtuel" sans tenir compte de la façon dont il est stocké dans le PDF original.

Disclaimer: Je suis affilié à ByteScout

0

iText api: PdfReader pr = new PdfReader ("C: \ test.pdf");

Références: PDFReader

+0

Que voulez-vous exprimer exactement avec cette réponse? – mkl

+0

Pour lire un fichier pdf, nous pouvons utiliser la classe PdfReader –

Questions connexes