Как пользоваться Tesseract OCR: быстрый старт и точное распознавание
Tesseract OCR — это консольный OCR‑движок: ставите программу, добавляете языки и запускаете команду вроде tesseract scan.png out -l rus --oem 1 --psm 6, получая текст или PDF с текстовым слоем. Ниже — установка, ключевые параметры и практичные настройки качества.
Установка и подключение языков (rus/eng)
Linux (Debian/Ubuntu):
sudo apt update
sudo apt install tesseract-ocr
macOS (Homebrew):
brew install tesseract
Windows:
- Установите Tesseract (появятся
tesseract.exeи папкаtessdata). - Проверьте в терминале:
tesseract -v
- Убедитесь, что в
tessdataлежат нужные файлы языков:rus.traineddata,eng.traineddata.
Ошибка Error opening data file ... eng.traineddata почти всегда означает одно из трёх: язык не установлен, tessdata не там, или Tesseract не видит путь к данным. Временно решается явным указанием --tessdata-dir.
Основные команды и параметры (--oem, --psm, форматы)
Базовый запуск
tesseract image.png out
Результат будет в out.txt.
Языки
tesseract image.png out -l rus
tesseract image.png out -l rus+eng
Движок распознавания: --oem
В большинстве случаев используйте нейросетевой режим:
tesseract image.png out -l rus --oem 1
Сегментация страницы: --psm (часто решает «половину качества»)
Подберите режим под тип входа:
Популярные режимы --psm
--psm | Когда ставить | Что предполагается |
|---|---|---|
| 6 | скан/фото с одним блоком текста | один ровный текстовый блок |
| 7 | номер, строка, заголовок | одна строка |
| 11 | вывески/фото с «разбросанным» текстом | искать текст по всей картинке |
Примеры:
tesseract scan.png out -l rus --oem 1 --psm 6
tesseract line.png out -l rus --oem 1 --psm 7
Вывод не только в TXT
Searchable PDF (картинка + невидимый текстовый слой):
tesseract scan.png result -l rus --oem 1 --psm 6 pdf
TSV (координаты + уверенность, удобно для парсинга):
tesseract scan.png - -l rus --oem 1 --psm 6 tsv
Если вам важны координаты слов/строк (подсветка, разметка, поиск по областям), начинайте с tsv: там есть боксы и confidence, и это проще обрабатывать, чем «чистый текст».
Качество распознавания: что делать, если ошибается
- Дайте нормальный вход: для документов стремитесь к эквиваленту ~300 DPI (или просто увеличьте мелкий текст без «мыла»).
- Контраст важнее фильтров: тёмный текст на светлом фоне распознаётся стабильнее; при инверсии лучше предварительно инвертировать изображение.
- Шум = ошибки: тени, «грязь» скана и JPEG‑артефакты сильно портят результат — иногда достаточно лёгкого шумоподавления и выравнивания.
- Не угадывайте разметку: если это одна строка — ставьте
--psm 7, если один блок —--psm 6. - PDF на вход — не «родной»: Tesseract распознаёт изображения. Если у вас PDF, его обычно сначала растрируют в PNG/TIFF (с нужным DPI), или используют утилиты‑обвязки, которые делают это автоматически.
Быстрый пример в Python (pytesseract)
import pytesseract
from PIL import Image
img = Image.open("scan.png")
text = pytesseract.image_to_string(img, lang="rus+eng", config="--oem 1 --psm 6")
print(text)
Частые ошибки
- Смешение языков без необходимости (
rus+engна полностью русском тексте): добавляет путаницу в похожих символах. - Неподходящий
--psm: строку распознают как страницу и получают «кашу» из переносов и пробелов. - Распознавание «как есть» с телефона: перспектива, блики и тени лучше исправить до OCR.
- Неверный путь к
tessdata: особенно часто в Windows, Docker и CI.
FAQ
-
Какой
--oemвыбрать?
Почти всегда--oem 1(LSTM). Другие режимы имеют смысл только для редких задач и специфичных данных. -
Почему текст распознаётся, но с кучей лишних переводов строк?
Обычно помогает правильный--psm(например,6для одного блока) и нормализация изображения (обрезка полей, выравнивание). -
Можно ли распознавать таблицы?
Tesseract может извлечь текст, но «структуру таблицы» надёжнее получать черезtsv/hocrи собирать сетку по координатам (или использовать отдельные инструменты для табличной вёрстки). -
Как проверить, какие языки доступны?
Выполнитеtesseract --list-langsи убедитесь, что естьrus/eng.