Open-source и свой сервер 4 мин чтения

PDF2MD: сканы и архивы в текст и отчёт, где OCR мог ошибиться

PDF2MD превращает папки, архивы и сканы в Markdown и пишет отчёт: какие страницы пропали, где вместо текста мусор. Разбираю по исходникам, куда уходят файлы, как считается качество и как проверить программу пилотом на 100 страницах.

PDF2MDOCRархив скановраспознавание документов
Коротко. PDF2MD (репозиторий gogi2305/PDF2MD, лицензия MIT) превращает папки, архивы ZIP, RAR и 7z, PDF, TIFF-сканы, фото и файлы Word и Excel в Markdown. К результату он прикладывает отчёт: какие страницы пропали, какие пришли пустыми, где вместо текста мусор. Главное условие: сканы распознаются не на вашем компьютере. Программа отправляет их в облачный OCR (Gemini, Mistral, LlamaParse или GLM), локального распознавания в ней нет. Проекту две недели, автор один. Отчёт ловит явный мусор, а правдоподобно искажённую цифру не заметит. Договоры с персональными данными без решения юриста через неё пускать нельзя.
Хотите внедрить это у себя?

Сделаю под ключ: разберу задачу, назову срок и цену. Чтобы начать, напишите в Telegram одной фразой.

Настроить конвейер документов с проверкой качества распознавания

Пачка договоров из ZIP и вопрос, можно ли верить тексту

Допустим, бухгалтерии или юристу присылают архив: сотни сканов договоров, актов и счетов, часть PDF, часть фотографии, часть многостраничные TIFF. Нужен текст, по которому можно искать и который можно отдать ИИ-помощнику. Обычный конвертер выдаёт файлы и молчит: пропала страница 14, три листа пустые, на четвёртом набор символов. Вы узнаете об этом, когда по документу не найдётся нужный пункт.

Про ИИ-помощника по документам у меня есть разбор Yahont CE, про поиск по готовым файлам статья про rga. Здесь речь о шаге до них: как получить текст и понять, где ему не стоит доверять.

Что это за проект и что я проверил

Проверял 24.10.2026 по репозиторию gogi2305/PDF2MD: README, исходники, LICENSE, историю коммитов. Сам проект не запускал, всё ниже по документации и коду. Файл LICENSE содержит текст MIT, правообладатель указан как gogi2305. Первый коммит датирован 8 октября 2026, последний 9 октября (версия 1.4.0, она же единственный релиз). Всего шесть коммитов, 7 звёзд, один форк, репозиторий не архивирован. Автор один, юридического лица нет.

Это настольная программа с окном (Tkinter) для Windows, Linux и macOS. Для Windows в релизе лежит PDF2MD.exe размером около 150 МБ без цифровой подписи, SmartScreen его предупредит. Исходники рядом, exe собирается скриптом build_exe.py. Готовый exe я не проверял, надёжнее запускать из исходников.

Как устроен отчёт

В коде две проверки. Первая: страницы. В Markdown перед каждой страницей ставится скрытая метка вида page N. Отчёт сравнивает число страниц исходного PDF с метками и перечисляет пропавшие и пустые. Надёжно это работает для цифровых PDF и для Mistral OCR, который возвращает страницы списком. У Gemini метки зависят от того, выполнит ли модель инструкцию. Для LlamaParse и GLM-OCR проверка страниц не работает, отчёт пишет «не проверено».

Вторая: эвристика по тексту, считается на весь документ. Мусорным считается слово со смесью кириллицы и латиницы или слово от пяти букв без гласных. «Сомнительно» получает документ короче 15 символов, с 25 процентами мусорных слов и больше, с 10 процентами меток «неразборчиво» и больше или с более чем пятью символами замены. Для «проверить» достаточно 10 процентов мусорных слов, 3 процентов меток или одного символа замены. Остальное «надёжно».

Из этого следуют два ограничения. Оценка по документу целиком, поэтому одна плохая страница в большом файле может размыться в среднем. Разработчик сам пишет в README: «надёжно» означает, что явного мусора нет. Искажённая сумма, фамилия, неверная цифра в ИНН проходят проверку.

Дополнительно можно включить сверку вторым OCR-движком. Он прогоняет только документы, не получившие «надёжно», сравнивает тексты и при сходстве ниже 85 процентов пишет HTML с двумя колонками. Расхождение показывает, где смотреть, но не какой движок прав.

Куда уходят файлы

По исходникам сканы, фото и TIFF (перед отправкой он превращается в PDF) уходят целиком на серверы выбранного сервиса: Gemini (модель gemini-2.5-flash, адрес generativelanguage.googleapis.com), Mistral (api.mistral.ai), LlamaParse (cloud.llamaindex.ai) или GLM (api.z.ai). У Mistral код удаляет загруженный PDF после распознавания. Условия остальных сервисов я не проверял.

Локально читаются только цифровые PDF с текстовым слоем и файлы Office: для цифрового PDF в коде нужен текст (от 40 символов) хотя бы на половине из первых 12 страниц. Вкладка поиска тоже не полностью локальная: векторный индекс строится через Gemini, поэтому куски текста и ваш вопрос уходят в Google, даже если ответы пишет локальная Ollama.

Если в архиве персональные данные, передача их внешнему сервису требует отдельного решения: поручение обработки, серверы за границей. С этим идут к юристу. О локализации данных я писал в отдельной статье. Доступность этих сервисов из России: уточняйте. Полностью локальное распознавание делают модели вроде Chandra, но отчёта об ошибках в них нет.

Архивы, имена и установка

ZIP распаковывается встроенными средствами. Для имён из виндовых архивов код пробует cp866 и cp1251, кракозябр нет, есть защита от путей вверх (zip slip). Для RAR и 7z нужен установленный 7-Zip (запасные варианты: tar и py7zr для 7z). Вложенные архивы разворачиваются, многотомный RAR открывается с первого тома, архив с паролем не останавливает пачку, символьные ссылки пропускаются. Файлы с одинаковыми именами из разных мест получают суффикс: x.pdf и x_2.pdf. Имена внутри RAR и 7z обрабатывает 7-Zip, это я не проверял, как и его лицензию.

Выход: Markdown с метками страниц, JSON-фрагменты, report.md и report.json. Word и PDF на выходе нет. Для Office-файлов нужен Python 3.12 или 3.13.

Что важно учесть

Сравнений точности на русских документах в репозитории нет. Рукописный текст, печати и сложные таблицы зависят от выбранной модели, гарантий README не даёт. Скорость зависит от лимитов сервиса: для Gemini в коде есть пауза между запросами под лимит 15 запросов в минуту, результаты кэшируются по хешу файла. Цифр производительности нет.

Что можно сделать уже сейчас

Сначала пилот. Возьмите 100 страниц: 80 обычных и 20 заведомо плохих (перекос, бледная печать, телефонное фото, факс). Эти 20 важнее остальных: отчёт должен их заметить. Используйте обезличенные копии, если юрист не разрешил иное.

Чек-лист из семи пунктов:

  1. Какие файлы уходят наружу, проверьте по исходникам и сетевому трафику.
  2. Сколько из 20 плохих сканов отчёт пометил «проверить» или «сомнительно».
  3. Совпадает ли число страниц в отчёте с числом в оригинале для каждого файла.
  4. Выберите 15 критичных полей на документ: даты, суммы, ИНН, номера договоров, и сверьте их глазами.
  5. Оригиналы храните, текст нужен для поиска.
  6. Файлы с пометкой «не проверено» сверяйте вручную целиком.
  7. Заранее решите, кто и какую долю архива проверяет выборочно.

Настроить конвейер, выбрать распознавание в облаке или на вашем сервере и подключить результат к поиску или ИИ-помощнику могу в рамках автоматизации бизнеса.

Частые вопросы

Можно ли использовать PDF2MD без отправки данных наружу?

Для цифровых PDF, Word и Excel да, они читаются локально. Сканам и фото нужен ключ облачного сервиса.

Заменяет ли отчёт ручную проверку?

Нет. Он показывает пропавшие страницы и явный мусор, а неверно прочитанные цифры не ловит.

Что с кириллицей в именах файлов?

Для ZIP код подбирает кодировку cp866 или cp1251. Для RAR и 7z имена обрабатывает 7-Zip, я это не проверял.

Коротко о главном

PDF2MD под лицензией MIT собирает папки и архивы в Markdown и показывает пропавшие страницы и явный мусор. Сканы он отправляет в облачный OCR, проекту две недели, автор один, точность на русских документах не измерена.

Если нужно проверить такую схему на ваших документах и собрать конвейер с контролем качества, напишите мне в Telegram кодовое слово «ПРОПУСКИ».

Ещё open-source для бизнеса

Эта статья — часть каталога бесплатных решений, которые я разворачиваю на вашем сервере под ключ: CRM, аналитика, документы, почта, безопасность, магазины, AI.

Обсудим вашу задачу

Что я делаю для бизнеса

Напишите одной фразой, что нужно. Отвечу, что подойдёт, сколько займёт и сколько стоит. Сообщение уже подготовлено.

  • Боты в Telegram, MAX, VK
  • Автоматизация процессов и CRM
  • Аналитика и дашборды
  • Сайты и лендинги под ключ
Пишу о разработке, ИИ и законах для бизнеса

Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.

Готовые решения под ключTurnkey solutionsSoluciones llave en mano交钥匙解决方案Түлхүүр гардуулах шийдэл 451 готовых IT-решений для бизнеса451 ready-made IT solutions for business451 soluciones IT listas para empresas451 个面向企业的现成 IT 解决方案Бизнест зориулсан 451 бэлэн IT шийдэл Автоматизация, боты, AI, 152-ФЗ и платформы · бесплатная консультацияAutomation, bots, AI, data privacy and platforms · free consultationAutomatización, bots, IA, privacidad de datos y plataformas · consulta gratis自动化、机器人、AI、数据合规与平台 · 免费咨询Автоматжуулалт, бот, AI, өгөгдлийн хамгаалалт ба платформ · үнэгүй зөвлөгөө Смотреть каталогView catalogVer catálogo查看目录Каталог үзэх