Ваши операторы вручную перепечатывают данные с бланков, счетов и накладных? Ошибки при ручном вводе стоят времени и денег. Мы интегрируем 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 = 'rus') -> 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 = 'rus') -> 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='rus+eng', config=custom_config) Если в документах встречаются специфические термины (медицинские, технические), мы создаём кастомный словарь:
# Создание custom .traineddata combine_tessdata -u rus.traineddata rus. # Добавляем кастомный словарь в rus.user-words echo "ЭКГ МРТ КТ УЗИ" > rus.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% на стандартных документах. Предоставляем полный цикл — от анализа до поддержки.







