2009-11-04 3 views
5

actuellement, si je fais un objet page d'une page pdf avec pypdf et extractText(), ce qui se passe est que les lignes sont enchaînées ensemble. Par exemple, si la ligne 1 de la page indique «bonjour» et la ligne 2 indique «monde», le texte résultant de extractText() est «helloworld» au lieu de «hello world». Est-ce que quelqu'un sait comment résoudre ceci, ou a des suggestions pour un travail autour? J'ai vraiment besoin du texte pour avoir des espaces entre les lignes parce que je suis en train de faire du texte sur ce texte pdf et ne pas avoir d'espaces entre les lignes le tue ....python et pypdf - comment extraire le texte des pages afin qu'il y ait des espaces entre les lignes

+1

Vous pouvez jeter un oeil à cette SO page: http://stackoverflow.com/questions/25665/python-module-for-converting-pdf-to-text Il y a quelques bonnes suggestions là-bas! – avelldiroll

Répondre

2

Ceci est un problème commun avec l'analyse de pdf. Vous pouvez également vous attendre à des tirets de fin que vous devrez corriger dans certains cas. Je suis venu avec une solution de contournement pour un de mes projets que je vais décrire ici:

J'ai utilisé pdfminer pour extraire XML à partir de PDF et j'ai également trouvé des mots concaténés dans le XML. Je tirai le même PDF en HTML et le code HTML peut être décrit par des lignes de l'expression rationnelle suivante:

<span style="position:absolute; writing-mode:lr-tb; left:[0-9]+px; top:([0-9]+)px; font-size:[0-9]+px;">([^<]*)</span> 

Les travées sont en position absolue et ont un style haut que vous pouvez utiliser pour déterminer si un saut de ligne est arrivé. Si un saut de ligne s'est produit et que le dernier mot de la dernière ligne n'a pas de tiret, vous pouvez séparer le dernier mot de la dernière ligne et le premier mot de la ligne en cours. Il peut être difficile dans les détails, mais vous pourriez être en mesure de corriger presque toutes les erreurs d'analyse de texte. En outre, vous pouvez exécuter une bibliothèque de dictionnaire comme enchant sur votre texte, trouver des erreurs et si la solution suggérée par le dictionnaire est comme le mot d'erreur mais avec un espace quelque part, le mot d'erreur est susceptible d'être une erreur d'analyse et peut être corrigé avec la suggestion de dictionnaires.

PDF Parsing suce et si vous trouvez une meilleure source, utilisez-le.

Questions connexes