Какие шаги нужно предпринять, чтобы устранить проблему с Tesseract-OCR, если он не распознает текст на русском языке?

Привет всем! <br/> Я новичок в программировании и столкнулась с задачей извлечения текста из изображений на русском языке. Я следовала инструкциям, однако при запуске программы возникла ошибка, и я не могу понять, в чем дело. Можете помочь мне разобраться? Вот мой код: <br/> 
<pre><code class="python">import pytesseract
from PIL import Image
import os

# Укажите полный путь к Tesseract
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

# Установите TESSDATA_PREFIX
os.environ['TESSDATA_PREFIX'] = r'C:\Program Files\Tesseract-OCR'

# Укажите путь к папке с изображениями
image_folder = r"D:\Новая папка\PythonProject1\.venv\frames\input_video1"
output_file = r"D:\Новая папка\PythonProject1\output.txt"

# Открываем файл для записи
with open(output_file, 'w', encoding='utf-8') as f:
    for filename in os.listdir(image_folder):
        if filename.lower().endswith(('.png', '.jpg', '.jpeg')):
            img_path = os.path.join(image_folder, filename)
            if not os.path.exists(img_path):
                print(f"Файл не найден: {img_path}")
                continue
            try:
                img = Image.open(img_path)
                text = pytesseract.image_to_string(img, lang='rus')
                if text.strip():  # Проверка, что текст не пустой
                    f.write(text + '\n')
                else:
                    print(f"Текст не извлечен из {filename}")
                print(f"Текст извлечен из {filename}")
            except pytesseract.pytesseract.TesseractError as e:
                print(f"Ошибка Tesseract при обработке {filename}: {e}")
            except Exception as e:
                print(f"Ошибка при обработке {
  • 2 февраля 2025 г. 22:04
Ответы на вопрос 2
Чтобы решить проблему с распознаванием текста на русском языке с помощью Tesseract-OCR, выполните следующие шаги:

1. **Убедитесь, что вы установили языковые файлы**:
   - Для распознавания русского языка необходимо установить языковой пакет для Tesseract. Обычно этот пакет находится в папке `tessdata`.
   - Скачайте файл `rus.traineddata`, если он отсутствует. Вы можете найти его на [GitHub репозитории Tesseract](https://github.com/tesseract-ocr/tessdata) или в папке установки Tesseract, если вы устанавливали его с поддержкой русского языка.

2. **Проверьте путь к `tesseract.exe`**:
   - Убедитесь, что путь к `tesseract.exe` правильный. Вы можете это проверить, попытавшись запустить Tesseract из командной строки. Введите `tesseract -v` и проверьте, отобразится ли версия Tesseract.

3. **Установите `TESSDATA_PREFIX` правильно**:
   - Переменная окружения `TESSDATA_PREFIX` должна указывать на каталог, где находятся файлы `.traineddata`. Обычно это должно быть `C:\Program Files\Tesseract-OCR\tessdata`. Таким образом, убедитесь, что настройка такая:
     ```python
     os.environ['TESSDATA_PREFIX'] = r'C:\Program Files\Tesseract-OCR'
     ```

4. **Проверка формата и качества изображений**:
   - Убедитесь, что изображения, которые вы используете, имеют хорошее качество и четкость. Текст должен быть четким и читаемым.
   - Если изображения содержат слишком много шума или искажений, Tesseract может не распознать текст.

5. **Используйте команду для отладки**:
   - Чтобы увидеть, как Tesseract обрабатывает ваш текст, добавьте параметр `config` для включения отладки. Например:
     ```python
     text = pytesseract.image_to_string(img, lang='rus', config='--psm 6')
     ```
   - Параметр `--psm` отвечает за режим обработки. Попробуйте разные режимы, чтобы улучшить результаты.

6. **System Locale**:
   - Убедитесь, что ваша система настроена для поддержки русского языка. Это может включать установку локализации или изменения параметров кодировки.

### Пример кода после рекомендации:

```python
import pytesseract
from PIL import Image
import os

# Укажите полный путь к Tesseract
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

# Установите TESSDATA_PREFIX
os.environ['TESSDATA_PREFIX'] = r'C:\Program Files\Tesseract-OCR'

# Укажите путь к папке с изображениями
image_folder = r"D:\Новая папка\PythonProject1\.venv\frames\input_video1"
output_file = r"D:\Новая папка\PythonProject1\output.txt"

# Открываем файл для записи
with open(output_file, 'w', encoding='utf-8') as f:
    for filename in os.listdir(image_folder):
        if filename.lower().endswith(('.png', '.jpg', '.jpeg')):
            img_path = os.path.join(image_folder, filename)
            if not os.path.exists(img_path):
                print(f"Файл не найден: {img_path}")
                continue
            try:
                img = Image.open(img_path)
                text = pytesseract.image_to_string(img, lang='rus', config='--psm 6')
                if text.strip():  # Проверка, что текст не пустой
                    f.write(text + '\n')
                else:
                    print(f"Текст не извлечен из {filename}")
                print(f"Текст извлечен из {filename}")
            except pytesseract.pytesseract.TesseractError as e:
                print(f"Ошибка Tesseract при обработке {filename}: {e}")
            except Exception as e:
                print(f"Ошибка при обработке {filename}: {e}")
```

Следуя этим шагам, вы должны смочь устранить проблемы с распознаванием текста на русском языке с помощью Tesseract-OCR.
C:\\Program Files\\Tesseract-OCR/rus.traineddata 
Указано в ошибке, а у вас в проводнике:
C:\\Program Files\\Tesseract-OCR/ tessdata /rus.traineddata

Лучше ипользовать EasyOCR, куда более эффективен при машинном зрении, но требует значительной обработки изображения перед чтением и не любит шумы. Писал ПО для чтения вин-номеров авто с японских сертификатов на экспорт. Сначала пользовался Tesseract, потом перешел на EasyOCR:
Вот последние результаты чтения:
[03.02.2025 / 16:31:55] Task " is completed. Result: 31/35. User is: 1369
[03.02.2025 / 14:14:47] Task " is completed. Result: 14/17. User is: 1322
[31.01.2025 / 16:27:18] Task " is completed. Result: 22/25. User is: 1322
[31.01.2025 / 16:01:32] Task " is completed. Result: 9/9. User is: 1369
[30.01.2025 / 15:52:53] Task " is completed. Result: 45/58. User is: 1369
[29.01.2025 / 15:12:49] Task " is completed. Result: 40/44. User is: 1369

70%+ точного определения текста с изображений
Похожие вопросы