# Розпізнавання тексту за допомогою Tesseract

Автор: Антон Кістол

*У цьому уроці ми покроково розглянемо інструменти оптичного розпізнавання тексту, відомого як OCR (англ. Optical Text Recognition) — від встановлення та налаштування до практичного використання. Технологія OCR використовується в повсякденному житті для розпізнавання тексту з зображень, сканів, книг та відео тощо.*

На відміну від комерційного програмного забезпечення, такого як Adobe Acrobat або FineReader, інструменти на кшталт **Tesseract** не мають графічного інтерфейсу. Натомість робота з цією програмою здійснюється через командний рядок. Однак не варто боятися роботи із текстовими командами — вони доволі прості та зрозумілі, а заучувати їх всі напам’ять зовсім не обов’язково, оскільки для регулярного користування вам достатньо лише кілька основних.

**Tesseract** — це безкоштовна програма з відкритим кодом для оптичного розпізнавання тексту на зображеннях, яка наразі належить і підтримується Google. Програма працює на базі мовних пакетів (моделей) та здатна розпізнавати текст та шрифти понад 130 мов. Наприклад, сьогодні Tesseract розпізнає давньогрецьку, середньоанглійську, а також фрактурний шрифт. Зокрема, підтримується і українська мова. Втім, мовних моделей для розпізнавання староукраїнських текстів, написаних уставом чи напівуставом поки що не існує, хоча їх можна натренувати самостійно за бажанням.

## Встановлення

### Windows

Інсталятори для Windows для Tesseract 3.05, Tesseract 4 і Tesseract 5 доступні на платформі [Tesseract at UB Mannheim](https://github.com/UB-Mannheim/tesseract/wiki). До них також входять інструментарій для тренування власних мовних моделей. Доступні версії як для 32-бітних, так і для 64-бітних систем.

Завантажити останню версію програми можна за [посиланням](https://github.com/tesseract-ocr/tesseract/releases/download/5.5.0/tesseract-ocr-w64-setup-5.5.0.20241111.exe) (x64)

Під час інсталяції можна вибрати мовні моделі, з якими ви плануєте працювати. Для цього позначте потрібні мови зі списку під пунктом Additional language data (download):

<figure><img src="/files/TKt2WhnDulZNRUfD2zD0" alt=""><figcaption></figcaption></figure>

Якщо виникла потреба додати якусь мову пізніше, мовні пакети можна скачати з репозиторію на GitHub за [посиланням](https://github.com/tesseract-ocr/tessdata) та просто скопіювати в папку з програмою. За замовчуванням, мовні пакети та скрипти встановлюються в `C:\Program Files\Tesseract-OCR\tessdata`

{% hint style="info" %}
Увага: Tesseract слід встановлювати або в папку, рекомендовану під час інсталяції, або в нову директорію. Деінсталяція видаляє всі файли в папці зі встановленою програмою. Якщо ви встановили Tesseract у вже наявнуіснуючу папку, усі файли та підпапки в ній будуть видалені.
{% endhint %}

Ознайомитися із іншими варіантами встановлення Tesseract на свій комп’ютер можна на[ офіційній сторінці програми](https://tesseract-ocr.github.io/tessdoc/Installation.html).

### Linux/Ubuntu

Встановити Tesseract на Ubuntu можна за допомогою простих команд в командному рядку:

`sudo apt install tesseract-ocr`\
`sudo apt install libtesseract-dev`&#x20;

**Примітка для користувачів Ubuntu:** якщо `apt` не може знайти пакет, спробуйте додати запис `universe` до файлу sources.list, як показано нижче:

`sudo vi /etc/apt/sources.list`

Cкопіюйте перший рядок `deb http://archive.ubuntu.com/ubuntu bionic main` і вставте його наступним рядком, як показано нижче. Якщо ви використовуєте іншу версію Ubuntu, замініть bionic на відповідну назву вашої версії.

`deb http://archive.ubuntu.com/ubuntu bionic universe`

Пакети встановлення з різними версіями Tesseract для інших дистрибутивів Linux доступні за посиланнями:

**Debian packages**

* [Tesseract 4](https://launchpad.net/~alex-p/+archive/ubuntu/tesseract-ocr)
* [Tesseract 5](https://launchpad.net/~alex-p/+archive/ubuntu/tesseract-ocr5)
* [Tesseract 5 (devel-daily)](https://launchpad.net/~alex-p/+archive/ubuntu/tesseract-ocr-daily)

#### Ubuntu ppa

* [Tesseract 4](https://notesalexp.org/tesseract-ocr/packages/)
* [Tesseract 5](https://notesalexp.org/tesseract-ocr/packages5/)
* [Tesseract 5 (devel)](https://notesalexp.org/tesseract-ocr/packages-dev/)

#### Ubuntu packages

* [Tesseract 4](https://notesalexp.org/tesseract-ocr/packages/)
* [Tesseract 5](https://notesalexp.org/tesseract-ocr/packages5/)
* [Tesseract 5 (devel)](https://notesalexp.org/tesseract-ocr/packages-dev/)

#### Raspbian packages

* [Tesseract 4](https://notesalexp.org/tesseract-ocr/packages/)
* [Tesseract 5](https://notesalexp.org/tesseract-ocr/packages5/)
* [Tesseract 5 (devel)](https://notesalexp.org/tesseract-ocr/packages-dev/)

### MacOS

Ви можете встановити Tesseract на МacOS через менеджер пакетів [MacPorts](https://www.macports.org/) або [Homebrew](http://brew.sh/).

#### MacPorts

Для того, щоби встановити Tesseract, запустіть цю команду в командному рядку:

`sudo port install tesseract`

Для встановлення мовних пакетів запустіть цю команду:

`sudo port install tesseract-<підставити код мови>`

Список мовних кодів для Tesseract можна подивитися на сторінці [MacPorts tesseract page](https://www.macports.org/ports.php?by=name\&substr=tesseract-).

#### HomeBrew

Для того, щоби встановити Тesseract, запустіть цю команду в командному рядку:

`brew install tesseract`

Папку зі встановленим Tesseract можна знайти за допомогою команди `brew info tesseract`\
Наприклад: `/opt/homebrew/Cellar/tesseract/5.5.0`

## Запуск Tesseract на Windows

Для того щоби перевірити роботу Tesseract на нашому комп’ютері, для початку відкриємо [командний рядок (CMD)](#user-content-fn-1)[^1] та введемо команду `tesseract`:

<figure><img src="/files/Ojh4XlAlw9M73zPGRWGT" alt=""><figcaption></figcaption></figure>

Якщо програма встановлена коректно, то в консолі з’явиться таке повідомлення:

<figure><img src="/files/SlQHRVM8tadVTbQlg8Lw" alt=""><figcaption></figcaption></figure>

Якщо ж ви побачили таке повідомлення, то це означає, що папка із програмою не була додана в шлях операційної системи:

<figure><img src="/files/XNsTPi2eGadHo4TFPQ5x" alt=""><figcaption></figcaption></figure>

Для того, щоби виправити цю проблему, потрібно додати шлях до папки із програмою до PATH.

Для цього треба відкрити "Edit the system environment variables"\
(українською "Змінні середовища", для Windows 11 - "Змінні оточення"):

<figure><img src="/files/t8k4pbi46ePvYWq3tp8l" alt="" width="563"><figcaption></figcaption></figure>

Далі потрібно відкрити вкладку Path (відкривається подвійним кліком по виділенному рядку) та додати туди шлях до встановленої програми (за замовчуванням: `C:\Program Files\Tesseract-OCR`)

<figure><img src="/files/fkPXRQK0DOgkh1yPU9GM" alt=""><figcaption></figcaption></figure>

Далі натисніть на кнопку "New", та вставте скопійований шлях в Path. Натисніть ОК і перезапустіть командний рядок. Після цього програма має запрацювати. В іншому випадку спробуйте перезапустити комп’ютер або перевірте, чи доданий шлях був збережений.

<figure><img src="/files/mZ7sFJoZg8QnVUJVT71v" alt=""><figcaption></figcaption></figure>

Загалом, формула команди в Tesseract побудована таким чином:

`tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile...]`&#x20;

Тобто, перший оператор `tesseract` викликає саму програму, потім вказується ім’я файла для `imagename`. Замість `outputbase` підставляємо назву для файлу, в який буде записано наш текст (якщо його не існує, то він буде створений). Далі обираємо мову розпізнавання в `-l`, де замість `lang` підставляємо код мовного пакету, налаштування орієнтації тексту `-psm` та решту додаткових опцій за потреби.

## Розпізнавання тексту

Tesseract розпізнає текст безпосередньо з зображень. Після розпізнавання програма записує текст у новостворений файл (за замовчуванням це документ формату .txt, але можна зберігати і в інших форматах, наприклад, .pdf).

Команда для розпізнавання тексту з зображення виглядає таким чином:

`tesseract input_file.jpg output -l lang_code`&#x20;

Де `input_file` – це назва похідного зображення, `output` – назва документу, в який буде записаний розпізнаний текст, та `-l` – мова розпізнавання (наприклад, `ukr` для української, `eng` для англійської, `deu` для німецької тощо. Назви мовних кодів можна подивитися в папці зі встановленими мовними моделями `C:\Program Files\Tesseract-OCR\tessdata`)

Тепер випробуємо нашу команду. Для початку створимо на Робочому столі папку під назвою **images**. В якості прикладу будемо використовувати зображення зворотної сторони марки номіналом 50 шагів емісії УНР:

<figure><img src="/files/cWV6MH4f8HweCBm1GurN" alt=""><figcaption></figcaption></figure>

Перейменуємо це зображення на **poststamp.jpg** для зручності.

Тепер, копіюємо повний шлях до нашої папки на Робочому столі та вставляємо до командного рядка. За допомогою команди `cd` (від англ. сhange directory – змінити директорію) переходимо до неї:

<figure><img src="/files/8XK44yguPTuig7sdft8b" alt=""><figcaption></figcaption></figure>

запускаємо Tesseract за допомогою команди:

`tesseract poststamp.jpg output -l ukr`&#x20;

<figure><img src="/files/Lr8oYG7HQVmiBonSoSwO" alt=""><figcaption></figcaption></figure>

Після виконання команди в нашій папці з’явиться текстовий файл з розпізнаним текстом. Ось результат:

<figure><img src="/files/i2eJxp3pSAOFBXQf6qWT" alt=""><figcaption></figcaption></figure>

## Опрацювання великої кількості зображень одночасно

Якщо ми працюємо із багатьма файлами, ми можемо створити текстовий файл в Блокноті та вказати в ньому шляхи до наших зображень. Для прикладу візьмемо декілька колонок з радянської газети:

<figure><img src="/files/8WLVwdQLOpf8ZaCGKcx0" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/OQ6VN4Kw5fF2eRMibT17" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ly93KFOMwEFgZ7L2utgh" alt=""><figcaption></figcaption></figure>

Для зручності перейменуємо їх на 1, 2 та 3:

<figure><img src="/files/Kup4vWBixBEEAoQWAEYZ" alt=""><figcaption></figcaption></figure>

Далі створюємо документ в Блокноті, називаємо його input та додаємо шлях до кожного зображення:

<figure><img src="/files/hdY6s9tQk75FfU7j013Z" alt=""><figcaption></figcaption></figure>

Та запускаємо команду `tesseract input.txt output -l ukr`&#x20;

Після закінчення розпізнавання текст в файлі output.txt буде перезаписаний. Ось що у нас вийшло:

<figure><img src="/files/R4Cy5d4llZGBxNXiO5H1" alt=""><figcaption></figcaption></figure>

Оскільки остання версія Tesseract використовує мовні моделі, що були натреновані на базі нейромережі LSTM (Long-short term memory), кінцевий результат може відрізнятися. В такому разі, ви можете спробувати повторити процедуру розпізнавання тексту, або застосувати додаткові параметри `-psm`.

## Встановлення додаткових мовних моделей

Якщо вам потрібно додати мову, яку ви не обрали під час інсталяцїї, то ви можете завантажити її з офіційного репозитарію програми на Github за [посиланням](https://github.com/tesseract-ocr/tessdata).

Для початку, за допомогою команди `tesseract --list-langs` виведемо на екран усі встановленні мови:

<figure><img src="/files/MAHKqRXvVH82ZTUnxlja" alt=""><figcaption></figcaption></figure>

Далі, знаходимо в репозиторії потрібну нам мовну модель. Наприклад, спробуємо встановити спрощенну китайську мову:

<figure><img src="/files/g0kbzVHbAjojxa5UyVFf" alt=""><figcaption></figcaption></figure>

Натискаємо на файл. Далі нас переносить на сторінку, з якої його треба завантажити. Нажимаємо на кнопку "download raw file":

<figure><img src="/files/OaDc4O0d67Ax34FWRMR5" alt=""><figcaption></figcaption></figure>

Збережений файл переносимо в папку `C:\Program Files\Tesseract-OCR\tessdata`&#x20;

<figure><img src="/files/lsqwjytclj5NSea7bd53" alt=""><figcaption></figcaption></figure>

Тепер випробуємо нашу модель, яка називається chi\_sim на цьому зображенні, яке назвемо **сhinese\_simpl.png**

<figure><img src="/files/epBXDe3A9bmXDdnZS5mP" alt=""><figcaption></figcaption></figure>

`tesseract chinese_simpl.png output -l chi_sim`&#x20;

Результат:

<figure><img src="/files/hUsak0kbkwtT9VQtqMJx" alt=""><figcaption></figcaption></figure>

## Розпізнавання багатомовного тексту

Якщо в нашому документі треба розпізнати текст кількома мовами, ми можемо вказати дві і більше мови в нашій команді.

Для прикладу візьмемо сторінку з німецько-українського словника 1941 року, для зручності назвемо його **slownyk.jpg**:

<figure><img src="/files/520WKVm8fYbORJBkNVsD" alt=""><figcaption></figcaption></figure>

Додаємо його до нашої папки images та запускаємо команду в консолі:

`tesseract slownyk.jpg output -l ukr+deu`&#x20;

*(Зауважте, що мовна модель deu має бути встановлена)* <br>

Результат:

<figure><img src="/files/zRI34Bk4EDk8lVuDV95P" alt=""><figcaption></figcaption></figure>

Для розпізнавання одночасно можна використовувати і більше мов, просто додаючи відповідні коди після оператора `-l` через +. Втім, додавання великої кількості мовних пакетів одночасно впливає на швидкість розпізнавання тексту та може погіршити кінцевий результат.

Також, якість розпізнаного тексту напряму залежить від якості похідного зображення. Переконайтеся, що літери достатньо контрастні та чітко виділяються на тлі. Також, рекомендовано використовувати зображення у форматах .png та .tiff для більш якісних результатів.

## Розпізнавання тексту в різних орієнтаціях

Додатково, ви можете використовувати параметри оператора `--psm` для роботи із різними орієнтаціями тексту.

Всього їх 12:

0 — розпізнається лише орієнтація та скрипт без розпізнавання тексту.\
1 — автоматичний розподіл сторінки з розпізнаванням орієнтації та скрипта (OSD).\
2 — автоматичний розподіл сторінки без розпізнавання OSD та тексту (OCR).\
3 — за замовчуванням, повністю автоматичний розподіл сторінки без розпізнавання OSD.\
4 — розпізнається один стовпець тексту змінних розмірів.\
5 — розпізнається один однорідний блок тексту, вирівняний вертикально.\
6 — розпізнається один однорідний блок тексту.\
7 — розпізнається зображення як один рядок тексту.\
8 — розпізнається зображення як одне слово.\
9 — розпізнається зображення як одне слово в колі.\
10 — розпізнається зображення як один символ.\
11 — розпізнається неупорядкований текст. Пошук максимальної кількості тексту без визначеного порядку.\
12 — розпізнається неупорядкований текст з OSD.\
13 — розпізнається необроблений рядок. Зображення обробляється як один рядок тексту, обходячи специфічні для Tesseract модифікації.

За замовчуванням використано параметр 3, тобто програма розпізнає текст повністю автоматично. Втім, за потреби можна використати інший, наприклад, 11:

`tesseract slownyk.jpg output -l ukr+deu --psm 11`&#x20;

Ось як програма розпізнає текст:

<figure><img src="/files/UWPeRylJOHUg8DFct2Fr" alt=""><figcaption></figcaption></figure>

За цієї конфігурації німецькомовна частина розпізналася краще, але український текст погіршився через додавання пробілів. Ви можете поекспериментувати із налаштуваннями розпізнавання орієнтації самостійно та визначити, який краще буде підходити для конкретного зображення.

## Зберігання тексту в інших форматах

Для того, щоби зберeгти отриманий текст в іншому форматі, достатньо просто вказати його розширення наприкінці команди. Наприклад, якщо ми хочемо зберeгти файл в форматі PDF, потрібно запустити команду:

`tesseract 1.png output -l ukr pdf`&#x20;

В результаті, отримаємо PDF документ із розпізнаним текстом, в якому можна робити пошук за словами:

<figure><img src="/files/AmYMDxAIzgz1bV9T7HT7" alt=""><figcaption></figcaption></figure>

Також для експорту підтримуються формати HTML та hOCR.

Повний список доступних опцій в Tesseract можна знайти за допомогою команди `tesseract --help` та `--help-extra`:

<figure><img src="/files/WqVGp92GWzMWPEiIx2yA" alt=""><figcaption></figcaption></figure>

Експерементуйте!

### Джерела

* "LibGuides: Introduction to OCR and Searchable PDFs: An Introduction to OCR." University of Illinois LibGuides, 21 November 2024, <https://guides.library.illinois.edu/c.php?g=347520\\&p=4116757>. Accessed 19 December 2024.
* NYU Libraries. "Home - Tesseract OCR Software Tutorial - Research Guides at New York University." NYU Libraries Research Guides, 6 December 2024, <https://guides.nyu.edu/tesseract>. Accessed 19 December 2024.
* "Tesseract User Manual | tessdoc." Tesseract documentation, <https://tesseract-ocr.github.io/tessdoc/>. Accessed 19 December 2024.

### Про автора

Антон Кістол, науковий співробітник, Дніпропетровський національний історичний музей ім. Д. І. Яворницького.

**Текст рецензували:**\
Тарас Назарук, керівник напряму цифрової історії Центру міської історії; аспірант Університету Гаґена, [ORCID](https://orcid.org/0009-0006-4132-9728);\
Іван Шпинда, Middle Software Engineer at Sombra.

**Рекомендоване цитування:**\
Кістол, Антон. "Розпізнавання тексту з допомогою Tesseract", *Посібник цифрової історії*, 2025. DOI: <https://doi.org/10.69915/dh021>

[^1]: Детальніше про можливості командного рядка можна прочитати в уроці Знайомство з Bash


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://digihist.lvivcenter.org/posibnik-z-cifrovoyi-istoriyi/upravlinnya-danimi/rozpiznavannya-tekstu-za-dopomogoyu-tesseract.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
