Как пользоваться 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:

  1. Установите Tesseract (появятся tesseract.exe и папка tessdata).
  2. Проверьте в терминале:
tesseract -v
  1. Убедитесь, что в 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, и это проще обрабатывать, чем «чистый текст».

Качество распознавания: что делать, если ошибается

  1. Дайте нормальный вход: для документов стремитесь к эквиваленту ~300 DPI (или просто увеличьте мелкий текст без «мыла»).
  2. Контраст важнее фильтров: тёмный текст на светлом фоне распознаётся стабильнее; при инверсии лучше предварительно инвертировать изображение.
  3. Шум = ошибки: тени, «грязь» скана и JPEG‑артефакты сильно портят результат — иногда достаточно лёгкого шумоподавления и выравнивания.
  4. Не угадывайте разметку: если это одна строка — ставьте --psm 7, если один блок — --psm 6.
  5. 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.