J'ai besoin d'extraire du texte des fichiers PDF à l'aide d'ITEXT.
Le problème est que: Certains fichiers PDF contiennent 2 colonnes et lorsque j'extraire du texte, je reçois un fichier texte où les colonnes sont fusionnées comme résultat (texte des deux colonnes Dans la même ligne) p>
Ceci est le code: p> Pourriez-vous m'aider avec la tâche? P> P>
6 Réponses :
Le fichier que vous extrayez est assez complexe à des fins d'extraction des données. Il y a des tables, des images, plusieurs colonnes. Vous aurez besoin d'algorithmes spéciaux pour déterminer l'ordre de lecture et traiter également les données de la table. p>
Qu'essayez-vous d'atteindre ici? Vous pouvez utiliser un moteur OCR commercial à la place et le laisser faire tout le travail acharné, puis traiter les données de là. P>
Je suis l'auteur du sous-système d'extraction de texte iText. Ce que vous devez faire est de développer votre propre stratégie d'extraction de texte (si vous regardez comment Comment vous allez déterminer où les colonnes commencent et que l'arrêt est entièrement à vous - c'est un problème difficile - PDF n'a aucun concept de colonnes (Heck, il n'a même pas de concept de mots - juste Mettre en place l'extraction de texte selon laquelle la stratégie par défaut fournit est assez délicate). Si vous connaissez à l'avance dans l'endroit où les colonnes sont, vous pouvez utiliser un filtre régional sur le rappel du texte du rendu de texte (il existe un code dans la bibliothèque IText pour le faire, et la dernière version du livre IText in Action donne un exemple détaillé) . P>
Si vous devez obtenir des colonnes à partir de données arbitraires, vous avez des travaux d'algorithme devant vous (si vous obtenez quelque chose de travail, j'aimerais jeter un oeil). Quelques idées sur la façon d'approcher ceci: p>
Une autre approche pouvant être faiblement réalisable serait d'analyser les opérations de dessin et de rechercher de longues lignes horizontales et verticales (en supposant que les colonnes soient délimitées dans un format de type type). En ce moment, l'analyseur de contenu ITEXT n'a pas de rappel pour ces opérations, mais il serait possible de les ajouter sans difficulté majeure. P> pdftextextractor.gettextFrompage code> est implémenté, vous verrez que vous pouvez fournir une stratégie enfichable). P>
Merci@kevin Comment Les lecteurs PDF font-le si bien?
@ David004 Je doute beaucoup que les lecteurs PDF font un travail incroyable sur tous les fichiers PDF. Il [I> serait possible d'être plus intelligent avec le caractère de séparateur que nous insérons entre les mots (ce que je soupçonne que les applications de lecteur PDF font). Fondamentalement, si la distance entre un caractère et la suivante est supérieure à un seuil (peut-être deux fois la largeur d'un caractère d'espace?) Utilisez un caractère à tabulation au lieu de l'espace. Cela peut être suffisant pour beaucoup de scénarios - mais certainement pas assez bon pour une analyse générale. Si cela vous aiderait, je pouvais envisager d'ajouter un comportement d'insertion de tabulation ...
Existe-t-il des algorithmes avec un exemple C pour compter et restreindre les mots (extrayez sur dB) de la ligne spécifique de la table en .pdf?
Les tables n'existent pas comme des structures en PDF à moins que le fichier utilise du contenu structuré. Comprenez-vous ce qu'est un fichier PDF? J'ai écrit un article de blog expliquant les problèmes d'extraction de texte à http://www.jpeal.org/ Pdfblog /? P = 228 p>
Vous pouvez également essayer PDFBox, mais tout retourne au manque de structure dans le PDF - c'est principalement un format de sortie de fichier d'extrémité pour l'affichage. P>
Je sais que ma réponse est un peu en retard. Mais j'utilise le code suivant pour lire certaines pages de fichiers PDF. Je n'ai pas eu de problème de lecture de colonnes, aucun texte fusionné, chaque colonne est imprimée de l'autre. Si vous cherchez à extraire une partie d'une page, disons 1 colonne Seulement, alors vous devez obtenir les dimensions de la colonne. Il est toujours un peu délicat, mais vous pourrez peut-être comprendre cela si vous connaissiez déjà le texte de départ de la colonne (d'une manière d'estimer la largeur et la hauteur). Cela peut être fait en utilisant une zone rectangulaire. Voir le code ci-dessous et désolé si j'ai eu la mauvaise mesure du point. Dans le code ci-dessous, j'essaie d'obtenir la dimension de la page entière. P> } p> p>
pdftextstream est celui! Au moins, je suis capable d'identifier les valeurs de colonne. Plus tôt, j'utilisais ITEXT et je suis resté coincé dans la définition de la stratégie. C'est dur.
Cette API sépare les cellules de colonne en mettant plus d'espaces. C'est réparé. Vous pouvez mettre la logique. (Cela manquait dans ITEXT). p>
L'OP a écrit "J'ai besoin d'extraire du texte des fichiers PDF en utilisant ITEXT." Alors, comment votre réponse l'aide-t-elle à faire cela? (Dire pdftextstream est construit sur IText ne compte pas.)
C'est une promotion d'un produit payant