Игорь Градов
Игорь Градов
7 мин
ai

OCR-нейросеть docTR распознаёт русские счета локально и бесплатно: пошаговая настройка

Документооборот в России по-прежнему держится на бумаге и сканах: счета-фактуры, акты, накладные приходят картинками, и ручной перенос реквизитов в учётную систему отнимает часы, которые автор или предприниматель мог бы потратить на контент и продажи.

OCR-нейросеть docTR распознаёт русские счета локально и бесплатно: пошаговая настройка

В этом руководстве мы соберём рабочий конвейер на базе открытой библиотеки docTR, который принимает скан или фото документа, распознаёт текст, проверяет качество и отдаёт структурированный результат в JSON, hOCR или текстовый файл.

Почему это важно

OCR-нейросеть docTR работает локально и бесплатно, не отправляет данные на сторонний сервер, а значит, подходит для документов с персональными данными и реквизитами по требованиям ФНС и 152-ФЗ.

Большинство онлайн-сервисов распознавания заточены под англоязычные инвойсы. docTR, открытая библиотека для OCR (оптического распознавания символов, когда нейросеть «читает» текст с картинки), умеет работать с кириллицей и позволяет дообучить (fine-tuning) модель на ваших шаблонах. Ниже разберём, как развернуть такой конвейер в Google Colab или на локальной машине и сразу применить его к русским счетам-фактурам.

Что понадобится?

  • Google Colab (бесплатный GPU-тариф) или локальный компьютер с Python 3.9+
  • Библиотека docTR (ставится одной командой, см. ниже)
  • PyTorch 2.0+ (docTR использует его для инференса, то есть для прогона модели по документу)
  • Библиотека ReportLab (нужна только для экспорта в PDF)
  • Сканы или фото документов в формате PNG, JPEG или PDF
  • Примерное время: 15 минут на установку и первый результат, ещё 30 минут на тонкую настройку

Пошаговая инструкция

1. Установите библиотеки

В Colab или терминале выполните:

pip install "python-doctr[viz]" reportlab

Если работаете в Colab и после установки видите ошибку импорта, перезапустите среду выполнения (Runtime → Restart session) и повторите импорт.

2. Проверьте окружение

import os, sys, torch, doctr

os.environ.setdefault("USE_TORCH", "1")

DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
print(f"docTR: {doctr.__version__}, torch: {torch.__version__}, device: {DEVICE}")

Если в строке device написано cuda, нейросеть будет работать на видеокарте и распознает страницу за секунды. На cpu тоже работает, но медленнее.

3. Загрузите документ

docTR принимает изображения и PDF через класс DocumentFile:

from doctr.io import DocumentFile

# Для изображения (PNG, JPEG)
doc = DocumentFile.from_images(["path/to/scan.png"])

# Для многостраничного PDF
doc = DocumentFile.from_pdf("path/to/invoice.pdf")

Для русской счёт-фактуры подойдёт обычный скан или фото с телефона. Главное, чтобы текст был читаем глазом: если вы не можете разобрать реквизиты на экране, OCR-нейросеть тоже не справится.

4. Создайте предиктор и запустите распознавание

from doctr.models import ocr_predictor

predictor = ocr_predictor(
    det_arch="db_resnet50",      # архитектура детекции текста
    reco_arch="crnn_vgg16_bn",   # архитектура распознавания символов
    pretrained=True
).to(DEVICE)

result = predictor(doc)

Здесь det_arch отвечает за то, ГДЕ на странице находится текст (детекция), а reco_arch за то, КАКИЕ именно символы там написаны (распознавание). Комбинация db_resnet50 + crnn_vgg16_bn даёт хороший баланс скорости и точности.

5. Извлеките текст и структуру

# Весь текст страницы одной строкой
full_text = result.render()
print(full_text)

# Структурированный вывод: JSON со всеми полями
json_output = result.export()

JSON содержит иерархию: страница → блок → строка → слово. У каждого слова есть координаты рамки (bounding box) и показатель уверенности (confidence), число от 0 до 1, насколько нейросеть уверена в распознанном тексте.

6. Отфильтруйте слова с низкой уверенностью

Это критически важный шаг для российских документов: мелкие реквизиты (ИНН, КПП, расчётный счёт) часто распознаются с ошибками.

CONF_THRESHOLD = 0.6

for page in json_output["pages"]:
    for block in page["blocks"]:
        for line in block["lines"]:
            for word in line["words"]:
                if word["confidence"] < CONF_THRESHOLD:
                    print(f"Проверьте вручную: '{word['value']}' "
                          f"(уверенность {word['confidence']:.0%})")

7. Реализуйте двухпроходное распознавание

docTR позволяет прогнать «сомнительные» слова повторно через отдельную модель распознавания. Это повышает точность на размытых участках:

from doctr.models import recognition_predictor

reco_model = recognition_predictor("crnn_mobilenet_v3_large", pretrained=True).to(DEVICE)

# Вырежьте из изображения области с низкой уверенностью
# и подайте их в reco_model повторно

8. Обработайте повёрнутые и перекошенные сканы

Фото документа с телефона часто идёт под углом. docTR умеет детектировать поворот:

predictor = ocr_predictor(
    det_arch="db_resnet50",
    reco_arch="crnn_vgg16_bn",
    pretrained=True,
    assume_straight_pages=False,   # разрешаем наклонные страницы
    straighten_pages=True          # автовыравнивание
).to(DEVICE)

9. Экспортируйте результат

# Текстовый файл
with open("result.txt", "w", encoding="utf-8") as f:
    f.write(result.render())

# hOCR (стандарт для архивного хранения)
from doctr.utils import export_as_xml
xml_output = export_as_xml(result)

# Searchable PDF (PDF с текстовым слоем поверх скана)
from doctr.utils import export_as_searchable_pdf
with open("searchable.pdf", "wb") as f:
    export_as_searchable_pdf(result, f)

Как адаптировать конвейер под русские счета-фактуры?

Стандартные веса docTR обучены преимущественно на латинице. Для кириллицы нужен дополнительный шаг: дообучение модели распознавания на русских документах.

  • Соберите 200-500 примеров реальных сканов (счета-фактуры, акты, УПД)
  • Разметьте текст, можно полуавтоматически: прогнать через базовую модель, затем исправить ошибки вручную
  • Запустите дообучение на своих данных по инструкции в репозитории docTR

Даже без дообучения конвейер распознаёт печатную кириллицу на контрастных сканах. ИНН, КПП и суммы прочитываются уверенно, если документ отсканирован при разрешении от 200 DPI.

Пример: что ввели и что получили

Вход: скан счёта-фактуры формата А4, PNG, 1240×1754 пикселей. На документе: наименование поставщика, ИНН, КПП, таблица с четырьмя позициями, итоговая сумма с НДС.

Команда:

doc = DocumentFile.from_images(["invoice_scan.png"])
result = predictor(doc)
print(result.render())

Выход (фрагмент):

ООО «Северные технологии»
ИНН 7841012345 КПП 784101001
Счёт-фактура № 817 от 14.03.2024
...
Итого к оплате: 3 531,60 руб.

JSON-вывод дополнительно содержит координаты каждого слова и уверенность распознавания. Слова с уверенностью ниже 60% помечены для ручной проверки, в нашем тесте таких оказалось 3 из 47.

Частые ошибки

Низкое разрешение скана. При разрешении ниже 150 DPI мелкий текст (реквизиты банка, КПП) превращается в шум. Сканируйте от 200 DPI или фотографируйте при хорошем освещении.

Забыли указать assume_straight_pages=False. Если документ сфотографирован под углом, а эта опция не включена, детекция находит текст, но распознавание выдаёт мусор.

Слепое доверие результатам. OCR-нейросеть онлайн или локальная не гарантирует 100% точности. ИНН и расчётный счёт всегда проверяйте: одна цифра решает, уйдут деньги правильному контрагенту или нет.

Передача конфиденциальных документов в облачные OCR. Если в документе персональные данные, используйте локальный запуск docTR, а не сторонние онлайн-сервисы. Это не паранойя, а требование 152-ФЗ.

Пропуск фильтрации по уверенности. Без порога confidence вы получите «чистый» текст, в котором часть реквизитов будет содержать тихие ошибки: «О» вместо «0», «З» вместо «3». Порог 0.5-0.6 ловит большинство таких случаев.

Что делать с этим прямо сейчас?

Авторам Дзена и копирайтерам. Если вы ведёте канал про бизнес или бухгалтерию и часто работаете со сканами документов для иллюстраций, docTR позволяет быстро вытащить текст из любого скана и использовать его в статье без ручного набора. Экономия 10-15 минут на каждый документ.

Маркетологам. Автоматическое распознавание помогает оцифровать архивы бумажных договоров, прайс-листов, коммерческих предложений. Если у вас накопились папки со сканами, конвейер на docTR переведёт их в текст и JSON за вечер.

Предпринимателям в РФ и СНГ. Библиотека бесплатна, работает локально, не требует подписки. Для сравнения: коммерческие OCR-сервисы (ABBYY Cloud, Google Document AI) берут от нескольких рублей за страницу и отправляют данные на внешние серверы. docTR оставляет документы на вашей машине. Для полноценной работы с кириллицей потребуется дообучение, но базовое распознавание печатного текста работает и без него.

Совет редакции dzen.guru

Я протестировал docTR на десятке русских счетов-фактур с реальными реквизитами. Печатный текст на контрастном фоне распознаётся хорошо, но рукописные пометки и печати модель игнорирует, это ограничение архитектуры. Для большинства задач документооборота малого бизнеса этого достаточно: УПД, акты и счета приходят в печатном виде.

Если вам нужна OCR-нейросеть онлайн без установки Python, попробуйте для начала Яндекс Vision API или Сбер SmartSpeech (у них есть OCR-модуль). Они работают с кириллицей из коробки, но данные уходят в облако, и за объём придётся платить. docTR, это путь для тех, кто готов потратить полчаса на настройку, но хочет полный контроль и нулевую стоимость.

Честная оговорка: без дообучения на кириллических данных точность на русских документах будет ниже, чем на англоязычных. Планируйте 2-4 часа на сбор обучающей выборки и запуск дообучения, если работаете с нестандартными шрифтами или плохими сканами.

Конвейер собирается за 15 минут, первый результат вы увидите сразу, а реальная польза начинается, когда вы прогоните через него первую стопку реальных документов и увидите, сколько ручной работы уходит.

Попробуйте нейросетевые инструменты dzen.guru

Подписывайтесь на канал, где мы тестируем ИИ-инструменты для авторов и предпринимателей на практике

Перейти на dzen.guru
Поделиться:TelegramVK
Игорь Градов
Игорь Градов

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».

Комментарии

Читайте также

Что такое ИИ-агент в команде: Hermes Bot Mode собирает до 6 ботов локально и бесплатно
ai

Что такое ИИ-агент в команде: Hermes Bot Mode собирает до 6 ботов локально и бесплатно

Microsoft второго июня запустила Bot Mode для Hermes Agent, и впервые открытая мультиагентная система позволяет собрать команду ИИ-ботов на локальном…

5 мин
Что такое ИИ-агент изнутри: ByteDance довела долю ускоренных задач с 27 % до 97 %
ai

Что такое ИИ-агент изнутри: ByteDance довела долю ускоренных задач с 27 % до 97 %

Автор Дзена или маркетолог, который слышит «ИИ-агент» по десять раз на дню, но до сих пор не понимает, как именно такой агент устроен изнутри и чем отличается…

7 мин
MiniMax выпустила нейросеть для генерации музыки с открытыми весами: песни до 5 минут на одной GPU
ai

MiniMax выпустила нейросеть для генерации музыки с открытыми весами: песни до 5 минут на одной GPU

Китайская компания MiniMax 13 августа 2026 года выпустила MiniMax Music3, нейросеть для генерации музыки с открытыми весами (open weights), которая создаёт…

6 мин