Pytesseract: Ошибка Windows [Ошибка 2] Система не может найти указанный файл при вызове tesseract OCR

Я пытаюсь заставить работать tesseract OCR через Anaconda на основе Python 2.7. После различных изменений, предложенных в процессе, это последний код, написанный здесь.

> import os 

> from PIL import * 

> from PIL import Image 

> from tesseract import *                #different : quantum simulations
> 
> import pytesseract
> 
> print os.getcwd() 

> im = Image.open('D:\File_conv\phototest.tif') #to be sure of path

> im.load() 

> print im
> text = pytesseract.image_to_string(im)       #Generates error
> import pytesseract
> print(pytesseract.image_to_string(Image.open(
> 'D:/File_conv/phototest.tif')))                #
> print(pytesseract.image_to_string(Image.open('test-european.jpg'),
> lang='fra'))                                  #Same error

Вызов image_to_string вызывает ошибку Windows [Ошибка 2]:

> > text = pytesseract.image_to_string(im)
> >Traceback (most recent call last):
> 
>   File "<ipython-input-92-1f75dd6f29f3>", line 1, in <module>
>     text = pytesseract.image_to_string(im)
> 
>   File "C:\Program Files
> (x86)\Anaconda2\lib\site-packages\pytesseract\pytesseract.py", line
> 161, in image_to_string
>     boxes=boxes,
> 
>   File "C:\Program Files
> (x86)\Anaconda2\lib\site-packages\pytesseract\pytesseract.py", line
> 94, in run_tesseract
>     proc = subprocess.Popen(command,
> 
>   File "C:\Program Files (x86)\Anaconda2\lib\subprocess.py", line 711,
> in __init__
>     errread, errwrite)
> 
>   File "C:\Program Files (x86)\Anaconda2\lib\subprocess.py", line 959,
> in _execute_child
>     startupinfo)
> 
> WindowsError: [Error 2] The system cannot find the file specified

Я перепробовал все, что смог найти. Я нахожусь в Windows, и conda не может найти дистрибутив, поэтому я вручную извлек pytesser в Anaconda2 \ Lib, изменил init.py, чтобы указать на установку tesseract 3.02. Это дало ту же ошибку, что и эта. Затем я попробовал pytesseract, который смог найти через

>pip install pytesseract

Системная переменная TESSDATA_PREFIX и указательная переменная image_to_string указывают правильно:

> C:\Program Files (x86)\Tesseract-OCR

Я не могу понять, какая адресная ссылка неверна.


Изменить: такая же ошибка появляется на print command:

  File "C:\Program Files (x86)\Anaconda2\lib\site-packages\pytesseract\pytesseract.py", line 94, in run_tesseract
    print command

  File "C:\Program Files (x86)\Anaconda2\lib\subprocess.py", line 711, in __init__
    errread,

  File "C:\Program Files (x86)\Anaconda2\lib\subprocess.py", line 959, in _execute_child
    env,

WindowsError: [Error 2] The system cannot find the file specified

Объект command определен в функции ниже. Операторыprint, добавленные для проверки значения, не отображались в консоли перед ошибкой, и ошибка распространяется на if config:

    def run_tesseract(input_filename, output_filename_base, lang=None, boxes=False, config=None):
    '''
    runs the command:
        `tesseract_cmd` `input_filename` `output_filename_base`

    returns the exit status of tesseract, as well as tesseract's stderr output

    '''
    print tesseract_cmd
    print input_filename
    print output_filename_base
    command = [tesseract_cmd, input_filename, output_filename_base]

    print config
    if lang is not None:
        command += ['-l', lang]

    if boxes:
        command += ['batch.nochop', 'makebox']

    if config:
        command += shlex.split(config)

    print command
    proc = subprocess.Popen(command,
            stderr=subprocess.PIPE)
    return (proc.wait(), proc.stderr.read())

person Rishikesh Kashyap    schedule 13.12.2016    source источник
comment
Если вы хотите узнать, какой exe-файл вызывается, просто поместите print command прямо перед вызовом подпроцесса в pytesseract.py. Это поможет вам отладить.   -  person FMaz    schedule 13.12.2016
comment
Ваши распечатки не работают, ваш Python либо использует другую установку pytesseract, либо все еще есть старый pytesseract.pyc. Вы можете увидеть это на абсолютно идентичной трассировке, ошибка должна быть перемещена примерно на 4 строки (вместо того, чтобы быть на if config, что не имеет смысла).   -  person dav1d    schedule 13.12.2016


Ответы (1)


У меня была такая же проблема, вот что я сделал:

Консоль

person Scott    schedule 11.03.2017