Перейти к содержимому

Распознать документ (Tesseract OCR)

image_1

Описание

Блок распознаёт текст на изображении или в PDF-документе с помощью локального движка Tesseract OCR - без отправки данных во внешние сервисы. Перед распознаванием изображение приводится к высоте 1080 px и при необходимости обрабатывается: исправляется перекос, выполняется бинаризация и удаление шумов.

Блок работает в двух режимах:

  • Области для распознавания - распознаётся текст внутри заданных прямоугольных областей документа. Области удобно задать блоком Выбрать области для распознавания;
  • Ключевые слова - распознаётся вся страница, после чего из текста извлекаются значения по ключевым словам (якорям).

Установка Tesseract OCR

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

  1. Скачать установщик Tesseract OCR (UB Mannheim);
  2. Установить Tesseract OCR на компьютер;
  3. Скопировать путь до установленного Tesseract OCR: image_6
  4. Нажать комбинацию клавиш Win + R на клавиатуре;
  5. В появившемся окне ввести sysdm.cpl и нажать Enter;
  6. Перейти на вкладку Дополнительно и открыть раздел Переменные среды…: image_7
  7. Выполнить двойной клик по переменной PATH: image_8
  8. Добавить две новые записи, дважды кликнув по пустой строке:
    • C:\Program Files\Tesseract-OCR - путь до установленного Tesseract-OCR;
    • C:\Program Files\Tesseract-OCR\tessdata - путь до папки tessdata внутри установленного Tesseract-OCR;
  9. Выполнить сохранение;
  10. Выполнить перезагрузку компьютера.

Ошибки и варианты решения

1 - DLL load failed

При возникновении ошибки If you are not working on Numba development, the original error was: 'DLL load failed while importing _typeconv: Не найден указанный модуль.' требуется установить Visual C++ Redistributable.

2 - RuntimeWarning: Missing required CPU features

При возникновении ошибки RuntimeWarning: Missing required CPU features. The following required CPU features were not detected: avx, avx2, fma, bmi1, bmi2 Continuing to use this version of Polars on this processor will likely result in a crash. Install the "polars-lts-cpu" package instead of "polars" to run Polars with better compatibility. требуется:

  1. Удалить Polars
    • Для установленной студии Для всех пользователей: C:\Program Files\PuzzleRPA\4.0.0\venv\Scripts>pip.exe uninstall polars
    • Для установленной студии Для локального пользователя: C:\Users\<user_name>\AppData\Local\Programs\PuzzleRPA\4.0.0\venv\Scripts>pip.exe uninstall polars
  2. Установить Polars-lts
    • Для установленной студии Для всех пользователей: C:\Program Files\PuzzleRPA\4.0.0\venv\Scripts>pip.exe install polars_lts_cpu-1.2.1-cp38-abi3-win_amd64
    • Для установленной студии Для локального пользователя: C:\Users\<user_name>\AppData\Local\Programs\PuzzleRPA\4.0.0\venv\Scripts>pip.exe install polars_lts_cpu-1.2.1-cp38-abi3-win_amd64

Описание параметров

Блок имеет ряд параметров:

  1. Путь к файлу (PDF,JPEG,PNG) - путь к документу. Для PDF обрабатывается первая страница;

    Тип данных: str (Строка)

    Пример: C:\docs\invoice.png

  2. Режим - выпадающий список Области для распознавания / Ключевые слова; во второй разъём передаётся описание того, что искать:

    Тип данных: dict (Словарь) | list (Список)

    Пример: ["Счет №", ["Поставщик:", "Покупатель:"]]

    • Области для распознавания - словарь: ключ - название области, значение - список из двух точек (x, y) - противоположных углов прямоугольника в координатах изображения, например {"Номер": [(515, 119), (971, 285)]}. Такой словарь возвращает блок Выбрать области для распознавания;
    • Ключевые слова - список якорей: элемент-строка ("Счет №") возвращает текст после ключевого слова до конца строки, элемент-список из двух строк (["Поставщик:", "Покупатель:"]) - текст между двумя ключевыми словами. Регистр не учитывается.
    image_5
  3. Языковая модель - язык текста: RU, ENG или RUS+ENG (смешанный текст);

    Тип данных: dropdown (Выпадающий список)

    Пример: RU

  4. Коррекция перекоса изображения - автоматический поворот изображения на угол до ±10°, определяемый по строкам текста;

    Тип данных: checkbox (Чекбокс)

    Пример: ✔

  5. Бинаризация изображения - перевод изображения в чёрно-белое (порог Оцу). Как правило, улучшает распознавание сканов и фотографий;

    Тип данных: checkbox (Чекбокс)

    Пример: ✔

  6. Удалить шумы изображения - сглаживание изображения (размытие по Гауссу) для удаления мелких помех;

    Тип данных: checkbox (Чекбокс)

    Пример: ✔

  7. Режим распознавания символов - движок Tesseract: По умолчанию, Только классический Tesseract, Только LSTM (на основе нейронных сетей) или Гибрид Tesseract и LSTM;

    Тип данных: dropdown (Выпадающий список)

    Пример: По умолчанию

  8. Режим сегментации страниц - как Tesseract разбивает изображение на блоки текста (page segmentation mode). По умолчанию - Предполагается один блок текста; для документов со сложной вёрсткой подходят варианты с автоматической сегментацией, для отдельных надписей - «одна строка», «одно слово».

    Тип данных: dropdown (Выпадающий список)

    Пример: Предполагается один блок текста


Возвращаемое значение

Зависит от режима:

  1. Области для распознавания - словарь: ключ - название области, значение - распознанный в ней текст (переносы строк удалены);

    Тип данных: dict (Словарь)

    Пример: {"Номер": "542312", "Сумма": "90 000,00"}

  2. Ключевые слова - список найденных значений в порядке ключевых слов. Если ключевое слово в тексте не найдено, на его месте - строка Не удалось распознать.

    Тип данных: list (Список)

    Пример: ['542312 от 19.04.2026', 'ООО РБА, ИНН 7609016017']


Пример использования

В данном примере из изображения счёта извлекаются номер счёта и поставщик по ключевым словам.

image_3
  1. В переменную keywords записывается список ключевых слов: строка Счет № (текст после неё до конца строки) и пара Поставщик: / Покупатель: (текст между ними);
  2. В блоке Распознать документ (Tesseract OCR) указывается путь к изображению, выбирается режим Ключевые слова, в разъём передаётся keywords; языковая модель - RU, включена Бинаризация изображения;
  3. Результат сохраняется в переменную result и показывается блоком Уведомление пользователя.
image_2

Результат

Уведомление со списком найденных значений:

image_4