Tesseract
Tesseract — это свободное программное обеспечение для оптического распознавания символов (OCR, Optical Character Recognition), разрабатываемое компанией Google. Первоначально созданное в Hewlett-Packard в 1980-х годах, оно стало одним из самых точных и популярных инструментов для извлечения текста из изображений, поддерживающим множество языков, включая русский.
История
Разработка в Hewlett-Packard
Истоки Tesseract лежат в лаборатории Hewlett-Packard (HP) в Бристоле, Великобритания. В 1985 году инженеры Рэй Смит, Роджер Монк и Майкл Гэннон начали проект по созданию системы распознавания текста для корпоративных нужд HP, в частности для сканирования документов и книг. К 1990 году Tesseract, работавший на платформе Unix, стал одной из лучших систем OCR по точности распознавания, превзойдя коммерческие аналоги того времени. Однако HP не вывела Tesseract на открытый рынок, используя его преимущественно внутренне.
Переход в Open Source
В 2005 году HP приняла решение прекратить коммерческую поддержку Tesseract. Чтобы сохранить наработки, компания передала исходный код проекту с открытым исходным кодом. Tesseract был выпущен под лицензией Apache 2.0 и передан на поддержку компании Google. Именно Google в лице ведущего разработчика Рэя Смита (перешедшего в Google в 2006 году) обеспечила адаптацию кода под современные платформы (Windows, Linux, macOS) и добавила поддержку Unicode и множества языков.
Современное состояние
Начиная с версии 4.0 (2018 год) Tesseract использует нейросетевую архитектуру Long Short-Term Memory (LSTM), что значительно повысило точность распознавания. На 2024 год актуальная стабильная версия — 5.4.0, выпущенная в апреле 2024 года. Проект поддерживается сообществом разработчиков при участии Google.
Архитектура и принцип работы
Основные этапы обработки
Tesseract выполняет распознавание текста в несколько последовательных шагов:
- Бинаризация. Преобразование входного изображения (обычно цветного или полутонового) в чёрно-белое для упрощения дальнейшего анализа. Используется алгоритм Otsu.
- Сегментация страницы. Разделение изображения на текстовые блоки, строки, слова и символы. Tesseract анализирует геометрию страницы, распознавая колонки, таблицы, заголовки.
- Распознавание символов. Для каждого выделенного символа система использует обученную нейросеть (LSTM) или классический метод на основе шаблонов (в версиях до 4.0). Модели учитывают контекст: соседние символы и вероятные комбинации букв.
- Постобработка. Применение словаря языка и правил грамматики для исправления ошибок распознавания и выбора наиболее вероятной последовательности символов.
Модели LSTM
Начиная с версии 4.0 Tesseract использует рекуррентные нейронные сети с долгой краткосрочной памятью (LSTM). Каждый язык имеет свою обученную модель, учитывающую характерные для этого языка шрифты, диграфы и частотность символов. Для русского языка доступны модели, обученные на корпусе текстов (включая кириллические шрифты), что позволяет распознавать как печатные, так и некоторые рукописные символы (с ограничениями).
Поддерживаемые языки и форматы
Языки
Tesseract поддерживает более 100 языков. Для каждого языка поставляются отдельные файлы обученных моделей (в формате .traineddata). Среди наиболее востребованных: английский, русский, испанский, французский, немецкий, китайский (упрощённый и традиционный), арабский, японский. Русский язык появился в официальной поддержке с версии 3.0 (2007 год) благодаря вкладу сообщества.
| Язык | Код | Модель |
|---|---|---|
| Русский | rus | LSTM + legacy (до 4.0) |
| Английский | eng | LSTM |
| Немецкий | deu | LSTM |
| Французский | fra | LSTM |
| Китайский (упр.) | chi_sim | LSTM |
Входные и выходные форматы
Tesseract принимает на вход изображения в форматах: PNG, JPEG, TIFF, BMP, GIF, PDF (растровые страницы). Поддерживаются изображения с глубиной цвета 1, 8, 24 бит на пиксель. На выходе система генерирует:
- Текстовый файл (
.txt) — распознанный текст в кодировке UTF-8. - hOCR (
.hocr) — XML-формат с координатами распознанных элементов, позволяющий сохранить структуру страницы. - ALTO (
.alto) — ещё один XML-формат для детальной разметки. - PDF — создание поискового PDF с текстовым слоем поверх изображения.
Применение
Оцифровка книг и архивов
Tesseract активно используется библиотеками и архивами для преобразования отсканированных книг, газет и рукописей в машиночитаемый текст. Например, проект Google Books применял Tesseract на ранних этапах. В России Tesseract используется для распознавания кириллических текстов в Президентской библиотеке им. Б. Н. Ельцина и при оцифровке исторических документов.
Автоматизация документооборота
Система встраивается в корпоративные решения для обработки счетов, договоров, анкет, паспортов. Tesseract часто применяется в связке с OpenCV для предварительной обработки изображений (поворот, устранение шума) или с Tesseract.js — JavaScript-версией для веб-серверов.
Мобильные приложения
Многие приложения-сканеры (например, CamScanner, Adobe Scan) на Android используют Tesseract (через библиотеку Tesseract OCR for Android) как один из движков распознавания. Библиотека доступна для iOS через Swift Package Manager.
Научные исследования
Tesseract служит эталоном для сравнения новых алгоритмов OCR. По данным бенчмарков (например, ICDAR 2019), Tesseract 4.0 демонстрирует частоту ошибок символьного распознавания (CER) около 0,5-1,5% на качественных сканах английских текстов и 1-3% на русских текстах с чётким шрифтом.
Классификация
Лицензионный статус
Tesseract распространяется под лицензией Apache 2.0, что позволяет использовать его в коммерческих проектах без ограничений, за исключением требований упоминания авторства. Это одна из самых свободных лицензий для OCR-движков, что способствовало его широкому распространению.
Интеграция
Tesseract не имеет собственного графического интерфейса (GUI), поставляясь в виде библиотеки для языков программирования (C++, Python, Java, Go, R) и утилиты командной строки tesseract. Существуют сторонние оболочки, такие как gImageReader, TesseractOCR GUI для Windows, но они не входят в официальный дистрибутив.
Ограничения и критика
Качество распознавания Tesseract сильно зависит от условий входного изображения:
- Зашумлённые или низкоконтрастные изображения могут приводить к частым ошибкам, что требует предварительной обработки (повышение контрастности, размытие, удаление фона).
- Рукописный текст распознаётся плохо (точность на уровне 20-40% в зависимости от почерка), за исключением чётких печатных рукописных стилей.
- Сложная вёрстка (например, с перекрывающимися текстовыми блоками, нестандартным наклоном, очень мелкими шрифтами) может привести к неправильной сегментации.
- Отсутствие поддержки таблиц напрямую — распознанный текст возвращается в виде потока символов, без структуры таблицы (ячейки, строки). Для извлечения табличных данных требуются сторонние библиотеки.
В международных бенчмарках (данные на 2023 год) Tesseract уступает коммерческим OCR-системам (ABBYY FineReader, Microsoft Azure Vision) на сложных изображениях с нестандартным шрифтом или декоративными элементами, но остаётся лидером среди свободных решений.
Интересные факты
- Название «Tesseract» происходит от математического термина «тессеракт» (четырёхмерный гиперкуб), что отсылает к четырёхмерному пространству и образует сходство с логотипом HP в виде трёхмерного куба.
- В версии 3.0 (2007) была добавлена поддержка русского языка благодаря работе сообщества, что сделало Tesseract одним из первых свободных OCR-инструментов с кириллицей.
- Tesseract используется в проекте «Оцифровка российской истории» (совместно с Эрмитажем и Президентской библиотекой), где с его помощью распознают тексты книг XVIII-XIX веков на кириллице и гражданском шрифте.
Источники
- Официальный репозиторий Tesseract на GitHub (разработчики Google).
- Документация Tesseract User Manual (версия 5.3, 2023).
- Статья Рэя Смита «An Overview of the Tesseract OCR Engine» (2007).
- Бенчмарк ICDAR 2019 Robust Reading Challenge.
- Отчёты проекта Google Books (2005–2010).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →