Konvertieren Sie gescannte PDFs in Text-PythonPython

Python-Programme
Anonymous
 Konvertieren Sie gescannte PDFs in Text-Python

Post by Anonymous »

Ich habe eine gescannte PDF-Datei und versuche, Text daraus zu extrahieren.
Ich habe versucht, pypdfocr zu verwenden, um OCR darauf zu erstellen, aber ich habe die Fehlermeldung:


„Ghostscript konnte nicht an der üblichen Stelle gefunden werden“


Nach der Suche habe ich diese Lösung gefunden. Verlinkung Ghostscript zu pypdfocr auf der Windows-Plattform und ich habe versucht, GhostScript herunterzuladen und in die Umgebungsvariable einzufügen, aber es tritt immer noch der gleiche Fehler auf.

Wie kann ich mit Python nach Text in meiner gescannten PDF-Datei suchen?

Vielen Dank.

Bearbeiten: hier ist mein Codebeispiel:

Code: Select all

import os
import sys
import re
import json
import shutil
import glob
from pypdfocr import pypdfocr_gs
from pypdfocr import pypdfocr_tesseract
from PIL import Image

path = PATH_TO_MY_SCANNED_PDF
mainL = []
kk = {}

def new_init(self, kk):
self.lang = 'heb'
self.binary = "tesseract"
self.msgs = {
'TS_MISSING': """
Could not execute %s
Please make sure you have Tesseract installed correctly
""" % self.binary,
'TS_VERSION':'Tesseract version is too old',
'TS_img_MISSING':'Cannot find specified tiff file',
'TS_FAILED': 'Tesseract-OCR execution failed!',
}

pypdfocr_tesseract.PyTesseract.__init__ = new_init

wow = pypdfocr_gs.PyGs(kk)
tt = pypdfocr_tesseract.PyTesseract(kk)

def secFile(filename,oldfilename):
wow.make_img_from_pdf(filename)

files = glob.glob("X:/e206333106/ocr-114/balagan/" + '*.jpg')
for file in files:
im = Image.open(file)
im.save(file + ".tiff")

files = glob.glob("PATH" + '*.tiff')
for file in files:
tt.make_hocr_from_pnm(file)
pdftxt = ""
files = glob.glob("PATH" + '*.html')
for file in files:
with open(file) as myfile:
pdftxt = pdftxt + "#" + "".join(line.rstrip() for line in myfile)
findNum(pdftxt,oldfilename)

folder ="PATH"

for the_file in os.listdir(folder):
file_path = os.path.join(folder, the_file)
try:
if os.path.isfile(file_path):
os.unlink(file_path)
except Exception, e:
print e

def pdf2ocr(filename):
pdffile = filename
os.system('pypdfocr -l heb ' + pdffile)

def ocr2txt(filename):
pdffile = filename

output1 = pdffile.replace(".pdf","_ocr.txt")
output1 = "PATH" + os.path.basename(output1)

input1 = pdffile.replace(".pdf","_ocr.pdf")

os.system("pdf2txt" -o  + output1 + " " + input1)

with open(output1) as myfile:
pdftxt="".join(line.rstrip() for line in myfile)
findNum(pdftxt,filename)

def findNum(pdftxt,pdffile):
l = re.findall(r'\b\d+\b', pdftxt)

output = open('PATH' + os.path.basename(pdffile) + '.txt', 'w')
for i in l:
output.write(",")
output.write(i)
output.close()

def is_ascii(s):
return all(ord(c) < 128 for c in s)

i = 0
files = glob.glob(path + '\\*.pdf')
print path
print files
for file in files:
if file.endswith(".pdf"):
if is_ascii(file):
print file
pdf2ocr(file)
ocr2txt(file)
else:
newname = "PATH" + str(i) + ".pdf"
shutil.copyfile(file, newname)
print newname
secFile(newname,file)
i = i + 1

files = glob.glob(path + '\\' + '*_ocr.pdf')

for file in files:
print file
shutil.copyfile(file, "PATH" + os.path.basename(file))
os.remove(file)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post