2017-05-25 2 views
0

J'ai recadré un fichier pdf avec l'aide de pypdf2 mais quand j'essaye d'extraire le texte de ce pdf pdf recadré, Im obtenant le texte de pdf entier. Comment puis-je résoudre cela?Le contenu de la page entière est toujours présent même après que le fichier pdf est recadré

Après culture fichier pdf ressembler est enter image description here

Mais quand je lance la commande pdftotext out8.pdf out.txt

Je reçois:

Table des matières Présentation Partie I. Deux systèmes

  1. Les Les personnages de l'histoire

  2. attention et effort

  3. Le contrôleur Lazy

  4. Associatif machine

  5. Facilité cognitive
  6. Normes, Surprises et causes
  7. Machine pour sauter aux conclusions
  8. Comment les jugements se produisent
  9. Répondre à une question plus facile Partie II. Heuristiques et Préjugés
  10. La loi des nombres petits < 5>
  11. Ancres
  12. La science de la disponibilité
  13. Disponibilité, Emotion et risque
  14. Tom W Spécialité

La sortie était censé être seulement

  1. Les personnages de l'histoire

Le code que je couru

from PyPDF2 import PdfFileWriter, PdfFileReader 
input1 = PdfFileReader(open("./data/in2.pdf", "rb")) 
output = PdfFileWriter() 

page = input1.getPage(1) 
x = page.mediaBox.getUpperRight_x() 
y = page.mediaBox.getUpperRight_y() 

page.cropBox.lowerRight = (0,331-150) 
page.cropBox.upperRight = (252,331) 
output.addPage(page) 

outputStream = open("out8.pdf", "wb") 
output.write(outputStream) 
outputStream.close() 
+1

Thanos un de mes Villians les plus préférés de tous les temps. Ma citation préférée par lui était dans Thanos Quest Book 2. "Qui aurait pensé que devenir Dieu serait une victoire si creuse." –

+0

@Scott Boston Ah vous êtes revenu tellement :) J'aime Thanos aussi. Im un grand fan de merveille. En attente de la guerre de l'infini. – Dark

Répondre

0

Sonne comme il est d'extraire le texte à partir de la couche de texte. Les fichiers PDF peuvent avoir plusieurs calques: s'il s'agit purement d'un fichier image PDF, alors il aura simplement la couche d'image mais beaucoup ont une couche d'image avec une couche de texte. La couche de texte peut être en face de l'image, derrière l'image ou non visible.

À moins que le PDF n'ait été préparé d'une manière spéciale, la couche de texte ne s'aligne pas sur le texte vu dans l'image. Si vous avez un fichier PDF de plusieurs pages, le texte peut être divisé en pages pertinentes, mais il n'est pas disposé autrement sur la page.

Lorsque vous rognez l'image, cela n'affecte pas la couche de texte. Lorsque vous extrayez le texte, il l'attrape à partir du calque de texte qui est intact. Pour obtenir uniquement le texte de la section recadrée, vous devez le traiter via un moteur OCR, par exemple Tesseract.Exemples de paquets python qui interfacent avec Tesseract: pytesseract et tesserocr.

Quelques guides sur la façon de le configurer et exécuter le traitement:

ocr-on-pdf-files-using-python
ocr-python-easy

+0

OCR prend beaucoup de temps pour le traitement. Y a-t-il un moyen pour un traitement très rapide? – Dark

+1

N ° PDF est conçu comme un document de visualisation au niveau de la page, pas quelque chose pour le traitement. Tesseract est rapide pour un moteur ocr, mais si vous faites des centaines de pages, comme vous le dites, cela prendra du temps. Exemple de timings: 1 page texte solide = 2,5 secondes, livre complet 305 pages texte en grande partie solide = 13 minutes. Pour accélérer les choses, vous pourriez vouloir changer votre approche; est-il possible d'utiliser une source différente? Par exemple. regex sur le texte, ou si c'est une page web, utilisez une belle soupe pour gratter les parties de la page que vous voulez. Sinon, vous êtes coincé avec ocr. – Alan