Как конвертировать отсканированные PDF в текст с помощью палочки Python - PullRequest
0 голосов
/ 01 октября 2019

При использовании Wand и imageMagick для преобразования отсканированного PDF в текст я получаю следующую ошибку:

Ошибка:

Traceback (most recent call last):
  File "C:/Users/gibin/PycharmProjects/ML/Image_PDF/.ksldwjldf.py", line 28, in <module>
    Get_text_from_image(r"C:\Users\gibin\PycharmProjects\ML\Image_PDF\536676972_image.pdf")
  File "C:/Users/gibin/PycharmProjects/ML/Image_PDF/.ksldwjldf.py", line 13, in Get_text_from_image
    pdf=wi(filename=pdf_path,resolution=300)
  File "C:\Users\gibin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\wand\image.py", line 8212, in __init__
    units=units)
  File "C:\Users\gibin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\wand\image.py", line 8686, in read
    self.raise_exception()
  File "C:\Users\gibin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\wand\resource.py", line 240, in raise_exception
    raise e
wand.exceptions.DelegateError: FailedToExecuteCommand `"gswin32c.exe" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pngalpha" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 "-r300x300"  "-sOutputFile=C:/Users/GIBIN_~1./AppData/Local/Temp/magick-23476_sCYGtEq3gb-%d" "-fC:/Users/GIBIN_~1./AppData/Local/Temp/magick-234763X1vpsurlvH5" "-fC:/Users/GIBIN_~1./AppData/Local/Temp/magick-23476fUlS8Tr85dwk"' (The system cannot find the file specified.
) @ error/delegate.c/ExternalDelegateCommand/459

Код:

import io
from PIL import Image
import pytesseract
from wand.image import Image as wi
import gc

pytesseract.pytesseract.tesseract_cmd = r"C:\Users\gibin\AppData\Local\Tesseract-OCR\tesseract.exe"
def Get_text_from_image(pdf_path):
    print(pdf_path)
    pdf=wi(filename=pdf_path,resolution=300)
    pdfImg=pdf.convert('jpeg')
    imgBlobs=[]
    extracted_text=[]
    for img in pdfImg.sequence:
        page=wi(image=img)
        imgBlobs.append(page.make_blob('jpeg'))
        print(len(imgBlobs))
    for imgBlob in imgBlobs:
        im=Image.open(io.BytesIO(imgBlob))
        text=pytesseract.image_to_string(im)
        print(text)
        extracted_text.append(text)
    return ([i.replace("\n","") for i in extracted_text])
Get_text_from_image(r"C:\Users\gibin\PycharmProjects\ML\Image_PDF\536676972_image.pdf")

Ответы [ 2 ]

0 голосов
/ 03 октября 2019

Вы видели это ImageMagick Преобразование PDF в JPEG: FailedToExecuteCommand `" gswin32c.exe "/ PDFDelegateFailed ?. Вместо этого вы также можете использовать другие методы для преобразования PDF в JPG изображения страницы. Для этого я использовал библиотеку pdf2img. Если вы можете использовать любую библиотеку, то предпочитаете использовать pdf2img.

0 голосов
/ 03 октября 2019

Это нормально работает после установки GHOSTSCRIPT и добавления его в качестве переменной среды. Загрузите ghostscript с ЗДЕСЬ

После этого вам необходимо установить переменную окружения. Добавьте новую системную переменную:

Переменная: GS_PROG

Значение: полный путь к расположению вашего файла gswin64c.exe

...