Розпізнавання тексту за допомогою Tesseract
Last updated
Last updated
Автор: Антон Кістол
У цьому уроці ми покроково розглянемо інструменти оптичного розпізнавання тексту, відомого як OCR (англ. Optical Text Recognition) — від встановлення та налаштування до практичного використання. Технологія OCR використовується в повсякденному житті для розпізнавання тексту з зображень, сканів, книг та відео тощо.
На відміну від комерційного програмного забезпечення, такого як Adobe Acrobat або FineReader, інструменти на кшталт Tesseract не мають графічного інтерфейсу. Натомість робота з цією програмою здійснюється через командний рядок. Однак не варто боятися роботи із текстовими командами — вони доволі прості та зрозумілі, а заучувати їх всі напам’ять зовсім не обов’язково, оскільки для регулярного користування вам достатньо лише кілька основних.
Tesseract — це безкоштовна програма з відкритим кодом для оптичного розпізнавання тексту на зображеннях, яка наразі належить і підтримується Google. Програма працює на базі мовних пакетів (моделей) та здатна розпізнавати текст та шрифти понад 130 мов. Наприклад, сьогодні Tesseract розпізнає давньогрецьку, середньоанглійську, а також фрактурний шрифт. Зокрема, підтримується і українська мова. Втім, мовних моделей для розпізнавання староукраїнських текстів, написаних уставом чи напівуставом поки що не існує, хоча їх можна натренувати самостійно за бажанням.
Інсталятори для Windows для Tesseract 3.05, Tesseract 4 і Tesseract 5 доступні на платформі . До них також входять інструментарій для тренування власних мовних моделей. Доступні версії як для 32-бітних, так і для 64-бітних систем.
Завантажити останню версію програми можна за (x64)
Під час інсталяції можна вибрати мовні моделі, з якими ви плануєте працювати. Для цього позначте потрібні мови зі списку під пунктом Additional language data (download):
Встановити Tesseract на Ubuntu можна за допомогою простих команд в командному рядку:
sudo apt install tesseract-ocr
sudo apt install libtesseract-dev
Примітка для користувачів 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, запустіть цю команду в командному рядку:
sudo port install tesseract
Для встановлення мовних пакетів запустіть цю команду:
sudo port install tesseract-<підставити код мови>
Для того, щоби встановити Тesseract, запустіть цю команду в командному рядку:
brew install tesseract
Папку зі встановленим Tesseract можна знайти за допомогою команди brew info tesseract
Наприклад: /opt/homebrew/Cellar/tesseract/5.5.0
Для того щоби перевірити роботу Tesseract на нашому комп’ютері, для початку відкриємо та введемо команду tesseract
:
Якщо програма встановлена коректно, то в консолі з’явиться таке повідомлення:
Якщо ж ви побачили таке повідомлення, то це означає, що папка із програмою не була додана в шлях операційної системи:
Для того, щоби виправити цю проблему, потрібно додати шлях до папки із програмою до PATH.
Для цього треба відкрити "Edit the system environment variables" (українською "Змінні середовища", для Windows 11 - "Змінні оточення"):
Далі потрібно відкрити вкладку Path (відкривається подвійним кліком по виділенному рядку) та додати туди шлях до встановленої програми (за замовчуванням: C:\Program Files\Tesseract-OCR
)
Далі натисніть на кнопку "New", та вставте скопійований шлях в Path. Натисніть ОК і перезапустіть командний рядок. Після цього програма має запрацювати. В іншому випадку спробуйте перезапустити комп’ютер або перевірте, чи доданий шлях був збережений.
Загалом, формула команди в Tesseract побудована таким чином:
tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile...]
Тобто, перший оператор tesseract
викликає саму програму, потім вказується ім’я файла для imagename
. Замість outputbase
підставляємо назву для файлу, в який буде записано наш текст (якщо його не існує, то він буде створений). Далі обираємо мову розпізнавання в -l
, де замість lang
підставляємо код мовного пакету, налаштування орієнтації тексту -psm
та решту додаткових опцій за потреби.
Tesseract розпізнає текст безпосередньо з зображень. Після розпізнавання програма записує текст у новостворений файл (за замовчуванням це документ формату .txt, але можна зберігати і в інших форматах, наприклад, .pdf).
Команда для розпізнавання тексту з зображення виглядає таким чином:
tesseract input_file.jpg output -l lang_code
Де input_file
– це назва похідного зображення, output
– назва документу, в який буде записаний розпізнаний текст, та -l
– мова розпізнавання (наприклад, ukr
для української, eng
для англійської, deu
для німецької тощо. Назви мовних кодів можна подивитися в папці зі встановленими мовними моделями C:\Program Files\Tesseract-OCR\tessdata
)
Тепер випробуємо нашу команду. Для початку створимо на Робочому столі папку під назвою images. В якості прикладу будемо використовувати зображення зворотної сторони марки номіналом 50 шагів емісії УНР:
Перейменуємо це зображення на poststamp.jpg для зручності.
Тепер, копіюємо повний шлях до нашої папки на Робочому столі та вставляємо до командного рядка. За допомогою команди cd
(від англ. сhange directory – змінити директорію) переходимо до неї:
запускаємо Tesseract за допомогою команди:
tesseract poststamp.jpg output -l ukr
Після виконання команди в нашій папці з’явиться текстовий файл з розпізнаним текстом. Ось результат:
Якщо ми працюємо із багатьма файлами, ми можемо створити текстовий файл в Блокноті та вказати в ньому шляхи до наших зображень. Для прикладу візьмемо декілька колонок з радянської газети:
Для зручності перейменуємо їх на 1, 2 та 3:
Далі створюємо документ в Блокноті, називаємо його input та додаємо шлях до кожного зображення:
Та запускаємо команду tesseract input.txt output -l ukr
Після закінчення розпізнавання текст в файлі output.txt буде перезаписаний. Ось що у нас вийшло:
Оскільки остання версія Tesseract використовує мовні моделі, що були натреновані на базі нейромережі LSTM (Long-short term memory), кінцевий результат може відрізнятися. В такому разі, ви можете спробувати повторити процедуру розпізнавання тексту, або застосувати додаткові параметри -psm
.
Для початку, за допомогою команди tesseract --list-langs
виведемо на екран усі встановленні мови:
Далі, знаходимо в репозиторії потрібну нам мовну модель. Наприклад, спробуємо встановити спрощенну китайську мову:
Натискаємо на файл. Далі нас переносить на сторінку, з якої його треба завантажити. Нажимаємо на кнопку "download raw file":
Збережений файл переносимо в папку C:\Program Files\Tesseract-OCR\tessdata
Тепер випробуємо нашу модель, яка називається chi_sim на цьому зображенні, яке назвемо сhinese_simpl.png
tesseract chinese_simpl.png output -l chi_sim
Результат:
Якщо в нашому документі треба розпізнати текст кількома мовами, ми можемо вказати дві і більше мови в нашій команді.
Для прикладу візьмемо сторінку з німецько-українського словника 1941 року, для зручності назвемо його slownyk.jpg:
Додаємо його до нашої папки images та запускаємо команду в консолі:
tesseract slownyk.jpg output -l ukr+deu
(Зауважте, що мовна модель deu має бути встановлена)
Результат:
Для розпізнавання одночасно можна використовувати і більше мов, просто додаючи відповідні коди після оператора -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
Ось як програма розпізнає текст:
За цієї конфігурації німецькомовна частина розпізналася краще, але український текст погіршився через додавання пробілів. Ви можете поекспериментувати із налаштуваннями розпізнавання орієнтації самостійно та визначити, який краще буде підходити для конкретного зображення.
Для того, щоби зберeгти отриманий текст в іншому форматі, достатньо просто вказати його розширення наприкінці команди. Наприклад, якщо ми хочемо зберeгти файл в форматі PDF, потрібно запустити команду:
tesseract 1.png output -l ukr pdf
В результаті, отримаємо PDF документ із розпізнаним текстом, в якому можна робити пошук за словами:
Також для експорту підтримуються формати HTML та hOCR.
Повний список доступних опцій в Tesseract можна знайти за допомогою команди tesseract --help
та --help-extra
:
Експерементуйте!
"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.
Антон Кістол, науковий співробітник, Дніпропетровський національний історичний музей ім. Д. І. Яворницького.
Рекомендоване цитування: Кістол, Антон. "Розпізнавання тексту з допомогою Tesseract", Посібник цифрової історії, 2025.
Якщо виникла потреба додати якусь мову пізніше, мовні пакети можна скачати з репозиторію на GitHub за та просто скопіювати в папку з програмою. За замовчуванням, мовні пакети та скрипти встановлюються в C:\Program Files\Tesseract-OCR\tessdata
Ознайомитися із іншими варіантами встановлення Tesseract на свій комп’ютер можна на.
Ви можете встановити Tesseract на МacOS через менеджер пакетів або .
Список мовних кодів для Tesseract можна подивитися на сторінці .
Якщо вам потрібно додати мову, яку ви не обрали під час інсталяцїї, то ви можете завантажити її з офіційного репозитарію програми на Github за .
Текст рецензували: Тарас Назарук, керівник напряму цифрової історії Центру міської історії; аспірант Університету Гаґена, ; Іван Шпинда, Middle Software Engineer at Sombra.