Распознать документ (Tesseract OCR)
Описание
Блок распознаёт текст на изображении или в PDF-документе с помощью локального движка Tesseract OCR - без отправки данных во внешние сервисы. Перед распознаванием изображение приводится к высоте 1080 px и при необходимости обрабатывается: исправляется перекос, выполняется бинаризация и удаление шумов.
Блок работает в двух режимах:
- Области для распознавания - распознаётся текст внутри заданных прямоугольных областей документа. Области удобно задать блоком Выбрать области для распознавания;
- Ключевые слова - распознаётся вся страница, после чего из текста извлекаются значения по ключевым словам (якорям).
Установка Tesseract OCR
Перед использованием блока необходимо установить Tesseract OCR и добавить путь к исполняемому файлу в переменную окружения PATH. Для этого требуется:
- Скачать установщик Tesseract OCR (UB Mannheim);
- Установить Tesseract OCR на компьютер;
- Скопировать путь до установленного Tesseract OCR:
- Нажать комбинацию клавиш
Win + Rна клавиатуре; - В появившемся окне ввести
sysdm.cplи нажатьEnter; - Перейти на вкладку Дополнительно и открыть раздел Переменные среды…:
- Выполнить двойной клик по переменной
PATH:
- Добавить две новые записи, дважды кликнув по пустой строке:
C:\Program Files\Tesseract-OCR- путь до установленного Tesseract-OCR;C:\Program Files\Tesseract-OCR\tessdata- путь до папкиtessdataвнутри установленного Tesseract-OCR;
- Выполнить сохранение;
- Выполнить перезагрузку компьютера.
Ошибки и варианты решения
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. требуется:
- Удалить 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
- Для установленной студии Для всех пользователей:
- Установить 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
- Для установленной студии Для всех пользователей:
Описание параметров
Блок имеет ряд параметров:
-
Путь к файлу (PDF,JPEG,PNG) - путь к документу. Для PDF обрабатывается первая страница;
Тип данных:
str (Строка)Пример:
C:\docs\invoice.png -
Режим - выпадающий список Области для распознавания / Ключевые слова; во второй разъём передаётся описание того, что искать:
Тип данных:
dict (Словарь) | list (Список)Пример:
["Счет №", ["Поставщик:", "Покупатель:"]]- Области для распознавания - словарь: ключ - название области, значение - список из двух точек
(x, y)- противоположных углов прямоугольника в координатах изображения, например{"Номер": [(515, 119), (971, 285)]}. Такой словарь возвращает блок Выбрать области для распознавания; - Ключевые слова - список якорей: элемент-строка (
"Счет №") возвращает текст после ключевого слова до конца строки, элемент-список из двух строк (["Поставщик:", "Покупатель:"]) - текст между двумя ключевыми словами. Регистр не учитывается.
- Области для распознавания - словарь: ключ - название области, значение - список из двух точек
-
Языковая модель - язык текста: RU, ENG или RUS+ENG (смешанный текст);
Тип данных:
dropdown (Выпадающий список)Пример:
RU -
Коррекция перекоса изображения - автоматический поворот изображения на угол до ±10°, определяемый по строкам текста;
Тип данных:
checkbox (Чекбокс)Пример:
✔ -
Бинаризация изображения - перевод изображения в чёрно-белое (порог Оцу). Как правило, улучшает распознавание сканов и фотографий;
Тип данных:
checkbox (Чекбокс)Пример:
✔ -
Удалить шумы изображения - сглаживание изображения (размытие по Гауссу) для удаления мелких помех;
Тип данных:
checkbox (Чекбокс)Пример:
✔ -
Режим распознавания символов - движок Tesseract: По умолчанию, Только классический Tesseract, Только LSTM (на основе нейронных сетей) или Гибрид Tesseract и LSTM;
Тип данных:
dropdown (Выпадающий список)Пример:
По умолчанию -
Режим сегментации страниц - как Tesseract разбивает изображение на блоки текста (page segmentation mode). По умолчанию - Предполагается один блок текста; для документов со сложной вёрсткой подходят варианты с автоматической сегментацией, для отдельных надписей - «одна строка», «одно слово».
Тип данных:
dropdown (Выпадающий список)Пример:
Предполагается один блок текста
Возвращаемое значение
Зависит от режима:
-
Области для распознавания - словарь: ключ - название области, значение - распознанный в ней текст (переносы строк удалены);
Тип данных:
dict (Словарь)Пример:
{"Номер": "542312", "Сумма": "90 000,00"} -
Ключевые слова - список найденных значений в порядке ключевых слов. Если ключевое слово в тексте не найдено, на его месте - строка
Не удалось распознать.Тип данных:
list (Список)Пример:
['542312 от 19.04.2026', 'ООО РБА, ИНН 7609016017']
Пример использования
В данном примере из изображения счёта извлекаются номер счёта и поставщик по ключевым словам.
- В переменную keywords записывается список ключевых слов: строка
Счет №(текст после неё до конца строки) и параПоставщик:/Покупатель:(текст между ними); - В блоке Распознать документ (Tesseract OCR) указывается путь к изображению, выбирается режим Ключевые слова, в разъём передаётся keywords; языковая модель - RU, включена Бинаризация изображения;
- Результат сохраняется в переменную result и показывается блоком Уведомление пользователя.
Результат
Уведомление со списком найденных значений: