Ваші оператори вручну передруковують дані з бланків, рахунків і накладних? Помилки при ручному введенні коштують часу та грошей. Ми інтегруємо Tesseract OCR — відкритий двигун розпізнавання тексту від Google (Wikipedia) — у вашу систему. Результат: текст вилучається автоматично з точністю до 98% на типових документах. І все це локально, без ризику витоку даних у хмари. При обсягах понад 10 000 сторінок на місяць Tesseract OCR на 40% дешевший за хмарні API.
Розглянемо, як ми вирішуємо типові проблеми при впровадженні OCR і що потрібно для безшовної інтеграції.
Які проблеми вирішуємо?
Головна складність — варіативність вхідних документів. Роздільна здатність, кут повороту, тип шрифту, фонові перешкоди — все це знижує точність розпізнавання. Особливо гостро стоїть питання змішаних мов: українська + англійська, українська + цифри. Ми стикалися з проєктом, де клієнт обробляв медичні поліси: скани були різної якості, а в тексті траплялися латинські абревіатури. Базова настройка давала 70% точності. Після підбору PSM та передобробки точність досягла 94%. Згідно з дослідженнями ефективності OCR, правильна передобробка зображень підвищує точність на 15–25%.
Ще одна проблема — LSTM engine в Tesseract 5 вимагає коректного вибору режиму сегментації сторінки (PSM). Неправильний PSM призводить до втрати половини тексту.
Як ми інтегруємо Tesseract
Ми використовуємо Python-бібліотеку pytesseract. Для базової роботи достатньо кількох рядків:
import pytesseract from PIL import Image import cv2 import numpy as np # Базове розпізнавання def extract_text(image_path: str, lang: str = 'ukr') -> str: image = Image.open(image_path) text = pytesseract.image_to_string(image, lang=lang, config='--psm 3') return text # Детальний вивід з позиціями def extract_with_positions(image_path: str, lang: str = 'ukr') -> list[dict]: image = Image.open(image_path) data = pytesseract.image_to_data( image, lang=lang, output_type=pytesseract.Output.DICT ) results = [] for i, text in enumerate(data['text']): if text.strip() and int(data['conf'][i]) > 0: results.append({ 'text': text, 'confidence': int(data['conf'][i]), 'x': data['left'][i], 'y': data['top'][i], 'w': data['width'][i], 'h': data['height'][i] }) return results Це основа. Для продакшну ми додаємо передобробку та тюнінг параметрів.
Чому локальний OCR вигідніший за хмарний?
Хмарні сервіси (Google Cloud Vision, Azure OCR) вимагають передачі даних назовні та коштують дорого при великих обсягах. Tesseract працює на вашому сервері — жодних витрат на API, жодних обмежень за кількістю запитів. При грамотному налаштуванні він не поступається за якістю комерційним аналогам. Крім того, всі дані залишаються всередині периметра, що критично для медичних та фінансових організацій. Ми гарантуємо конфіденційність обробки. Використання локального Tesseract OCR дозволяє заощадити до 60% бюджету на розпізнавання порівняно з хмарними сервісами.
Як покращити точність розпізнавання?
Перший крок — вибір правильного PSM (Page Segmentation Mode). Нижче — популярні режими:
| PSM | Опис | Використання |
|---|---|---|
| 0 | Тільки орієнтація | Рідко |
| 3 | Авто (default) | Загальний текст |
| 6 | Одиночний блок тексту | Абзаци |
| 7 | Один рядок | Поля форм |
| 8 | Одне слово | Штампи, печатки |
| 11 | Розріджений текст | Накладні, рахунки |
| 13 | Raw line | Технічні рядки |
Другий крок — передобробка зображення. Ми застосовуємо збільшення роздільної здатності, переведення в відтінки сірого, адаптивну бінаризацію та морфологію. Приклад функції:
def prepare_for_tesseract(image: np.ndarray, scale_factor: float = 2.0) -> np.ndarray: # Upscale — Tesseract працює краще при 300+ DPI h, w = image.shape[:2] image = cv2.resize(image, (int(w * scale_factor), int(h * scale_factor)), interpolation=cv2.INTER_CUBIC) # Grayscale gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # Adaptive threshold — краще для нерівномірного освітлення processed = cv2.adaptiveThreshold( gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 31, 2 ) # Dilate для покращення з'єднань символів kernel = np.ones((1, 1), np.uint8) processed = cv2.dilate(processed, kernel, iterations=1) processed = cv2.erode(processed, kernel, iterations=1) return processed Для української мови ми додатково налаштовуємо конфігурацію:
custom_config = ( '--psm 6 ' '--oem 3 ' # LSTM engine '-c preserve_interword_spaces=1 ' '-c tessedit_char_whitelist=' 'АБВГДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯабвгдеєжзиіїйклмнопрстуфхцчшщьюя' 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 .,!?-:;' ) text = pytesseract.image_to_string(image, lang='ukr+eng', config=custom_config) Якщо в документах трапляються специфічні терміни (медичні, технічні), ми створюємо кастомний словник:
# Створення custom .traineddata combine_tessdata -u ukr.traineddata ukr. # Додаємо кастомний словник в ukr.user-words echo "ЕКГ МРТ КТ УЗІ" > ukr.user-words Точність на різних сценаріях:
| Сценарій | Точність | Швидкість |
|---|---|---|
| Друкований текст, хороша якість | 95–98% | 0.5–2 сек/сторінка |
| Друкований текст, скани середньої якості | 85–92% | 1–3 сек/сторінка |
| Змішаний текст (укр+eng) | 88–95% | 1–3 сек/сторінка |
Процес роботи
- Аналіз документів. Ви надаєте 10-20 типових зразків. Ми оцінюємо якість, мову, шрифти.
- Підбір конфігурації. Вибираємо PSM, налаштування передобробки, список мов.
- Інтеграція. Вбудовуємо код у вашу систему, пишемо документацію.
- Тестування. Перевіряємо на вибірці документів, коригуємо.
- Деплой. Розгортаємо рішення на вашому сервері.
- Навчання. Проводимо сесію для ваших розробників.
Що входить в роботу
- Код інтеграції на Python (pytesseract) з готовими функціями
- Конфігураційні файли для PSM та передобробки
- Інструкція з розгортання у вашому середовищі (Docker / bare metal)
- Звіт про тестування на ваших документах
- Навчання команди (2 онлайн-сесії)
- Гарантійна підтримка 30 днів
Строки та вартість
| Задача | Строк |
|---|---|
| Базова інтеграція Tesseract | 3–5 днів |
| Оптимізація під конкретні документи | 1–2 тижні |
| Custom training для спеціальних шрифтів | 2–4 тижні |
Вартість розраховується індивідуально залежно від обсягу документів та складності. Зв'яжіться з нами для оцінки вашого проєкту. Отримайте консультацію з інтеграції Tesseract OCR вже сьогодні — ми підберемо оптимальну конфігурацію під ваш бізнес.
Чому обирають нас
Понад 5 років ми впроваджуємо OCR-рішення в бізнес-процеси. Виконали 50+ проєктів для фінансових, медичних та логістичних компаній. Гарантуємо якість розпізнавання не нижче 95% на стандартних документах. Надаємо повний цикл — від аналізу до підтримки.







