Je dois analyser un fichier PDF qui contient des données tabulaires. J'utilise PDFBox pour extraire le texte du fichier afin d'analyser le résultat (String) plus tard. Le problème est que l'extraction de texte ne fonctionne pas comme prévu pour les données tabulaires. Par exemple, j'ai un fichier qui contient un tableau comme celui-ci (7 colonnes : les deux premières ont toujours des données, une seule colonne Complexité a des données, une seule colonne Financement a des données) :
+----------------------------------------------------------------+
| AIH | Valeur | Complexité | Financement |
| | | Moyen | Élevé | Non applicable | MAC/Autre | FAE |
+----------------------------------------------------------------+
| xyz | 12.43 | 12.34 | | | 12.34 | |
+----------------------------------------------------------------+
| abc | 1.56 | | 1.56 | | | 1.56|
+----------------------------------------------------------------+
Ensuite j'utilise PDFBox :
PDDocument document = PDDocument.load(pathToFile);
PDFTextStripper s = new PDFTextStripper();
String content = s.getText(document);
Ces deux lignes de données seraient extraites comme ceci :
xyz 12.43 12.4312.43
abc 1.56 1.561.56
Il n'y a pas d'espaces entre les deux derniers nombres, mais ce n'est pas le plus gros problème. Le problème est que je ne sais pas ce que représentent les deux derniers nombres : Moyen, Élevé, Non applicable ? MAC/Autre, FAE ? Je n'ai pas la relation entre les nombres et leurs colonnes.
Il n'est pas nécessaire pour moi d'utiliser la bibliothèque PDFBox, donc une solution qui utilise une autre bibliothèque est acceptable. Ce que je veux c'est pouvoir analyser le fichier et savoir ce que chaque nombre analysé signifie.
11 votes
Bonne chance... Je suis moi-même dans l'enfer du PDF, et complètement dégoûté par ce format à ce stade.
27 votes
PDF était conçu pour être un format d'affichage de sortie et non pour l'extraction. Accusez les utilisateurs, pas le format.
0 votes
Si le PDF est de mise en page fixe, il existe d'autres façons d'extraire les données des colonnes. Je viens de créer un outil pour extraire le texte PDF des positions de champs fixes sur un formulaire. Ce serait intéressant de voir le fichier PDF auquel Matheus fait référence.
0 votes
Malheureusement, je ne peux pas afficher le fichier PDF. Il contient des données clients du projet et ne peut être divulgué.
0 votes
J'ai le même problème avec une autre bibliothèque (pdfparser.org). Il ne semble pas s'agir d'un problème de bibliothèque. La solution à laquelle je suis parvenu après de nombreuses recherches est de diviser le processus en deux étapes : 1) PDF vers HTML & 2) HTML vers TXT.
0 votes
Si c'est un fichier PDF vraiment terrible que PDFBox ne peut pas gérer, il existe deux options qui sont acceptables mais non garanties. Vous pouvez utiliser la détection des bords et l'analyse des contours (écrivez les vôtres, cherchez sur Github ou utilisez des outils commerciaux), puis la détection des coins de Harris pour créer une boîte englobante, et enfin un moteur OCR comme OCROpus ou Tesseract via la ligne de commande avec un pipe. Deuxièmement, utilisez un lecteur commercial avec un SDK comme Abby.
0 votes
Essayez d'appeler s.setSortByPosition(true) sur l'objet stripper.