Сбой Pytesseract с PermissionError: [WinError 5] Доступ запрещен из-за невозможности удаления файла - PullRequest
0 голосов
/ 21 февраля 2020

Я установил 64-битную версию из https://github.com/UB-Mannheim/tesseract/wiki, тогда pip install pytesseract cv2 не вызвал проблем

Мой код:

import cv2
import pytesseract
pytesseract.pytesseract.tesseract_cmd=r"C:\Program Files\Tesseract-OCR\tesseract.exe"

img = cv2.imread("test.png")
text = pytesseract.image_to_string(img)
print(text)

мой код не работает в строке 6 с

PermissionError: [WinError 5] Access is denied: 'C:\\Users\\nicol\\AppData\\Local\\Temp\\tess_puh3wgus'

кажется, что происходит сбой в функции

def cleanup(temp_name):
    """ Tries to remove temp files by filename wildcard path. """
    for filename in iglob(temp_name + '*' if temp_name else temp_name):
        try:
            remove(filename)
        except OSError as e:
            if e.errno != ENOENT:
                raise e

строка 131 в функции очистки при удалении (имя файла).

Кажется, что он пытается удалить временные файлы, но терпит неудачу, так как система запрещает доступ, поэтому -

Я попытался запустить IDE Spyder с правами администратора, я попытался дать C: \ Program Files \ Tesseract-OCR \ tesseract.exe полные разрешения. Я запустил полное обновление анаконды. Я также попытался изменить пути системных переменных TEMP и TMP к местам, где права администратора (C: \ Temp) не требуются.

PermissionError: [WinError 5] Access is denied: 'C:\\Temp\\tess_hxw9iwvr.PNG'

До сих пор я обнаружил проблему в скрипте pytesseract.py создает копию предоставленного изображения, текстовый файл с желаемым выводом и пустой файл 0B, все синонимично в формате tess_ [a-z0-9] .extension. Проблема вызвана пустым файлом, когда я пытаюсь удалить его, требующий повышения прав (что у меня есть, так как я являюсь системным администратором). Я нажимаю кнопку «ОК», кратко переходит к удалению 0% и говорит, что после отказа в доступе требуются права администратора. Повторите попытку или отмените.

Приглашение Повторите попытку

1 Ответ

0 голосов
/ 24 февраля 2020

Я предполагаю, что функция cleanup () пытается удалить () файл и получает отказ в доступе. Отключение функции cleanup () файла pytesseract.py позволяет решить эту проблему, но мне удалось получить ожидаемый результат с залогом в 3 невыбранных «временных» файла. Повторное выполнение сценария, по-видимому, заменяет файл 0B новым, только если я попытался удалить файл.

...