Гид по технологиям

Извлечение текста из изображений на Linux с помощью Tesseract OCR

7 min read Linux OCR Обновлено 24 Nov 2025
Tesseract OCR на Linux — инструкция
Tesseract OCR на Linux — инструкция

Tesseract — бесплатный OCR-движок для Linux, который позволяет извлекать редактируемый текст из изображений и страниц PDF. В статье показаны установка, базовые команды, работа с языками и PDF, советы по предобработке изображений и готовые сценарии для пакетной обработки.

Обложка: компьютер и терминал с командами OCR

Быстрые ссылки

  • Оптическое распознавание текста
  • Установка Tesseract OCR
  • Использование Tesseract OCR
  • Работа с разными языками
  • Работа с PDF
  • Практические советы и проверки

Что такое OCR

Optical Character Recognition (OCR) — это технология, которая находит и преобразует текст на изображениях в редактируемый текст. Коротко: OCR считывает символы как текстовые данные. Для людей это простая задача. Для компьютеров — сложная: меняются шрифты, размеры и качество изображения.

Важно: OCR даёт лучший результат на качественных, чётких изображениях. Если исходное изображение размытое или имеет артефакты, потребуется предобработка.

Краткая история Tesseract

Tesseract появился в 1980‑х как коммерческое решение Hewlett Packard. В 2005 году проект был открыт с исходным кодом, а позднее получил поддержку от Google. Сегодня Tesseract — один из самых популярных и широко используемых OCR‑движков с поддержкой около 100 языков.

Установка Tesseract OCR

Примеры для популярных дистрибутивов Linux.

Ubuntu / Debian:

sudo apt-get install tesseract-ocr

Fedora:

sudo dnf install tesseract

Manjaro / Arch:

sudo pacman -Syu tesseract

Примечание: в некоторых дистрибутивах пакет называется просто tesseract, в других — tesseract-ocr. Если нужна GUI‑оболочка или дополнительные инструменты (ocrmypdf, tessdata), установите их отдельно.

Базовое использование Tesseract

Tesseract — командная утилита. Общая форма команды:

tesseract <входной-файл> <имя-выходного-файла> [опции]

Параметры, которые часто используются:

  • имя входного файла с изображением (png, jpg и т. д.)
  • имя выходного файла без расширения (создаст .txt)
  • –dpi N — явно указать разрешение изображения в dpi
  • -l <аббревиатура> — выбрать язык (например, eng, rus, fre)

Пример: у нас есть файл recital-63.png с разрешением 150 dpi. Создадим файл recital.txt:

tesseract recital-63.png recital --dpi 150

Пример: распознавание непростой страницы

Фрагмент Примечания 63 GDPR с номерами в верхнем регистре

Эта страница сложна: предложения начинаются с бледных надстрочных цифр. Tesseract хорошо извлёк основной текст, но надстрочные символы были неверно интерпретированы как кавычки или символы степени. Качество исходника критично.

Результат распознавания фрагмента с Примечанием 63

Работа с различными размерами шрифта и стилями

Страница с текстом разных размеров, выделениями жирным и курсивом

Файл bold-italic.png распознался корректно:

tesseract bold-italic.png bold --dpi 150

Текст, извлечённый из bold-italic.png

Работа с несколькими языками

Tesseract поддерживает множество языков. Сначала установите нужный языковой пакет. В Ubuntu пакеты имеют формат tesseract-ocr-.

Пример: валлийский (Cymraeg), код cym:

sudo apt-get install tesseract-ocr-cym

Для распознавания укажите параметр -l:

tesseract hen-wlad-fy-nhadau.png anthem -l cym --dpi 150

Если документ двуязычный, перечислите языки через +:

tesseract image.png textfile -l eng+cym+fra

Примечание: комбинирование языков увеличивает объём данных и может повысить число ошибочных сопоставлений, если языки имеют сильно пересекающиеся словари.

Текст первого куплета валлийского гимна

Распознавание текста из PDF

Tesseract работает с изображениями. Для PDF сначала переведите каждую страницу в изображение. Утилита pdftoppm (часть пакета poppler) создаёт отдельный PNG для каждой страницы.

pdftoppm -png turing.pdf turing

После этого вы получите turing-01.png, turing-02.png и т. д. Для пакетного запуска используйте цикл:

for i in turing-??.png; do tesseract "$i" "text-$i" -l eng; done;

Объединение результатов:

cat text-turing* > complete.txt

Техническая статья Алана Тьюринга для теста OCR

На практике Tesseract хорошо справился с основной текстовой частью, но потерял форматирование, пропустил одиночные буквы «Q»/«A» в списках, и некоторая мелкая печать или вертикальные штампы стали «шумом».

Первая страница извлечённого текста из PDF Тьюринга

Список вопрос-ответ и потерянные буквы в начале строк

Вторая страница извлечённого текста из PDF

Диаграммы и таблицы обычно теряют формат. Tesseract извлекает символы, но не умеет восстанавливать макет и взаимное расположение элементов.

Диаграмма из PDF и её распознанный текст

Страница с текстом и ошибками распознавания

Предобработка изображений для лучшего результата

Качество распознавания напрямую зависит от качества изображения. Рекомендуемые шаги:

  • Обрезка полей и удаление водяных знаков, если это возможно без потери данных.
  • Увеличение разрешения (например, до 300 dpi) при помощи масштабирования перед распознаванием.
  • Приведение к градациям серого и улучшение контрастности.
  • Бинаризация (порог) для сканов текстовых документов.
  • Устранение наклона страницы (deskew).
  • Удаление шума и мелких точек.

Примеры инструментов предобработки: ImageMagick, Pillow, OpenCV.

Команда ImageMagick для повышения контраста и увеличения dpi:

convert input.png -resize 200% -density 300 -colorspace Gray -contrast-stretch 0.5% preprocessed.png

Затем запускаете tesseract на preprocessed.png.

Постобработка: очистка и выравнивание текста

После OCR обычно нужен ручной или автоматизированный цикл очистки:

  • Используйте spellcheck (aspell, hunspell) для исправления опечаток.
  • Регулярные выражения для коррекции типичных ошибок (например, кавычки, надстрочные номера).
  • Нормализация пробелов и переносов строк.
  • Если важна разметка, сохраните исходный PDF и вручную восстановите форматирование.

Пример простого скрипта для исправления надстрочных символов:

# Пример POS‑обработки (bash + sed)
sed -e 's/["°]/ /g' complete.txt > cleaned.txt

Когда Tesseract даёт плохой результат

Тессеракт может ошибаться, если:

  • Исходник низкого качества: размытие, пикселизация, низкое разрешение.
  • Шрифт художественный или рукописный — Tesseract ориентирован на печатный текст.
  • Присутствуют графики, таблицы или сложное форматирование.
  • Язык не установлен или выбран неверно.

В таких случаях рассмотрите альтернативы: коммерческие OCR‑сервисы (Google Cloud Vision, AWS Textract, ABBYY) или гибридные рабочие процессы с ручной верификацией.

Альтернативные подходы и инструменты

  • ocrmypdf — удобный инструмент для создания поисковых PDF: добавляет слой текста поверх изображений и умеет пакетно обрабатывать документы.
  • OCRmyPDF + Tesseract — хорошо подходит для автоматизации пайплайнов.
  • Cloud OCR (Google Vision, Azure, AWS) — часто лучше работают с плохими сканами и рукописью, но платные.
  • Коммерческие решения (ABBYY FineReader) — сильны в точности и восстановлении разметки.

Пошаговая методика для пакетной обработки PDF большого объёма

  1. Создайте рабочую папку и положите туда все PDF.
  2. Для каждого PDF используйте pdftoppm, чтобы создать PNG‑страницы.
  3. Предобработайте изображения (масштабирование, повышение контраста, исправление наклона).
  4. Запустите tesseract в цикле, сохраняя результаты в отдельные .txt.
  5. Соберите все .txt в единый файл и прогоните через spellcheck.
  6. Сравните полученный текст с контрольным образцом (если есть) и выполните ручную проверку по выборке.

Пример скрипта (bash):

for pdf in *.pdf; do
  base="${pdf%.pdf}"
  pdftoppm -png "$pdf" "$base"
  for img in ${base}-*.png; do
    convert "$img" -resize 200% -density 300 tmp-"$img"
    tesseract tmp-"$img" "out-${img%.*}" -l eng
  done
  cat out-${base}-*.txt > "${base}.txt"
  rm tmp-${base}-*.png
done

Ролевые чек‑листы

Для разработчика:

  • Проверить наличие tessdata и нужных языков.
  • Создать тестовый набор изображений разных типов.
  • Автоматизировать предобработку.
  • Настроить логирование ошибок распознавания.

Для сисадмина:

  • Установить зависимости (poppler, ImageMagick).
  • Настроить пакетную обработку и расписание задач.
  • Мониторить место на диске и использование CPU.

Для контент‑редактора:

  • Оценить качество сканов.
  • Подготовить инструкции по проверке текста.
  • Установить критерии приёмки (см. ниже).

Критерии приёмки

  • Основной текст распознан с точностью визуально не менее приемлемой для чтения.
  • Ключевые термины и имена сохранены без ошибок.
  • Входные и выходные файлы корректно сопоставляются и хранятся.
  • Для юридических документов установлена ручная проверка после OCR.

Тонкости и ограничения

  • Tesseract не восстанавливает макет, таблицы и сложные диаграммы. Для таблиц лучше использовать специализированные конвертеры или ручную разметку.
  • Для рукописного текста результат обычно ненадёжен.
  • OCR автоматически не учитывает контекст правовых терминов; для критичных документов нужна экспертиза.

Советы по повышению точности

  • Работайте с разрешением не менее 300 dpi для типографских текстов.
  • Приводите изображения к оттенкам серого и повышайте контраст.
  • Избегайте многоцветных фонов и тиснения.
  • Устанавливайте правильный язык через -l.
  • По возможности указывайте –psm (Page Segmentation Mode) для предсказания структуры страницы.

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

tesseract page.png out -l eng --psm 1

Список важных режимов psm: 3 (полная страница), 6 (один блок текста), 11 (одно слово), 13 (single raw line).

Конфигурационные настройки и пользовательские словари

Tesseract позволяет подключать пользовательские словари и изменять конфигурацию через параметр –user-words и –user-patterns. Это полезно, если текст содержит специфические термины или имена.

tesseract img.png out -l eng --user-words words.txt

Безопасность и приватность

Если документы contain персональные данные (например, GDPR в примерах), учитывайте требования конфиденциальности. Работайте локально, если данные чувствительны, или используйте сертифицированные облачные сервисы с соглашением об обработке данных. Для юридических документов рекомендуется ручная верификация и контроль доступа к результатам распознавания.

Тесты и приёмочные критерии

Минимальные тесты:

  • Распознать страницу с печатным текстом A4 300 dpi и получить корректный текст без потерь слов.
  • Распознать страницу со смешанными языками, указав оба языка, и оценить число ошибок.
  • Обработать PDF на 10 страниц и собрать единый текстовый файл.

Критерии успеха: читаемость > визуально приемлема, ключевые термины сохранены.

Примеры типичных ошибок и как их исправлять

  • Ошибочные кавычки / знаки степени вместо надстрочных цифр — обрабатывать sed/regex.
  • Мелкие символы и сноски — увеличить dpi и повторить распознавание.
  • Пропуски букв в начале строк (Q/A) — возможно, Tesseract проигнорировал одиночные символы; можно восстановить по образцу с помощью регулярных выражений.

Короткий чеклист для запуска OCR

  1. Установите tesseract и языковые пакеты.
  2. Подготовьте изображения (300 dpi, серый, контраст).
  3. Запустите tesseract с нужными опциями: -l, –dpi, –psm.
  4. Выполните автоматическую очистку и spellcheck.
  5. Выполните выборочную ручную проверку.

Короткое объявление для команды (для рассылки)

Tesseract OCR теперь доступен на сервере обработки документов. Используйте его для создания редактируемого текста из PDF и сканов. Для массовой обработки применяйте предварительную обработку и проверку качества по описанным в инструкции шагам.

Заключение

Tesseract — мощный бесплатный инструмент для извлечения текста из изображений и PDF. Он не идеален: теряет форматирование, может ошибаться с мелкими символами и рисунками. Но при правильной предобработке и постобработке он даёт высокую практическую пользу и подходит для большинства задач автоматизации.

Важное примечание:

  • Для критичных юридических или финансовых документов всегда планируйте ручную проверку после OCR.

Дополнительные ресурсы

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Unity Lights: циферблат Apple Watch для Black History Month
Apple Watch

Unity Lights: циферблат Apple Watch для Black History Month

Обновление видеодрайвера для Rainbow Six Siege
Windows

Обновление видеодрайвера для Rainbow Six Siege

Ограничение частоты запросов в ASP.NET Core
Backend

Ограничение частоты запросов в ASP.NET Core

Исправление лагов Android: TRIM и LagFix
Mobile

Исправление лагов Android: TRIM и LagFix

Семафоры в Bash: что это и как реализовать
Bash

Семафоры в Bash: что это и как реализовать

Что делать при перегреве PS5
Гайды

Что делать при перегреве PS5