Ошибка кэширования при использовании pytesseract для OCR - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь использовать pytesseract OCR для извлечения текста из всех PDF-файлов в каталоге, но получаю сообщение об ошибке, что на моем устройстве недостаточно места.

Я хотел бы удалить каждое изображение из кэша после того, как оно больше не требуется, поскольку этому пользователю было рекомендовано сделать, но я не могу найти ничего в pytesseract документация, объясняющая, как это сделать.

Вот мой код:

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

def extract_text_from_image(path):
    pdfFile = wi(filename = path, resolution = 300)
    image = pdfFile.convert('jpeg')  

    imageBlobs = []
    for img in image.sequence:
        imgPage = wi(image = img)
        imageBlobs.append(imgPage.make_blob('jpeg'))

    extract = []
    for imgBlob in imageBlobs:
        image = Image.open(io.BytesIO(imgBlob))
        text = pytesseract.image_to_string(image, lang = 'eng')
        extract.append(text)

    return extract

Вот сообщение об ошибке:

CacheError: unable to extend cache 'C:/Users/b00kgrrl/AppData/Local/Temp/magick-11952ORBzkae3wXX_18': No space left on device @ error/cache.c/OpenPixelCache/3889

1 Ответ

0 голосов
/ 02 марта 2020

Я решил это сам, используя найденный код здесь и здесь :

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

def extract_text_from_image(path):

    pdfFile = wi(filename = path, resolution = 300)
    image = pdfFile.convert('jpeg')

    tempdir = r"C:\Users\b00kgrrl\AppData\Local\Temp"
    cache = os.listdir( tempdir )

    imageBlobs = []
    for img in image.sequence:
        imgPage = wi(image = img)
        imageBlobs.append(imgPage.make_blob('jpeg'))

    extract = []
    for imgBlob in imageBlobs:
        image = Image.open(io.BytesIO(imgBlob))
        text = pytesseract.image_to_string(image, lang = 'eng')
        extract.append(text)

        for item in cache:
            if item.endswith(".jpg") or item.startswith("magick-"):
                os.remove( os.path.join( tempdir, item ) )
                winshell.recycle_bin().empty(confirm=False, show_progress=False, sound=False)

    return extract
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...