Infinite AI Text Recognizer — распознавание документов без ограничения длины
Настольная программа под Windows поверх открытой модели распознавания: она разбирает документ целиком за один проход, а не режет его на куски и сшивает результат. Пользователю при этом не нужны ни Python, ни CUDA, ни командная строка — приложение изучает железо, выбирает режим работы и ставит себе всё необходимое само.
Исходный код открыт: github.com/GhostCorpTech/infinite-ai-text-recognizer — можно открыть и посмотреть своими глазами.
Как это выглядит
Скриншоты настоящие: это окно работающего приложения.
Что умеет продукт
- PDF и изображения превращаются в размеченный текст
- Многостраничный документ обрабатывается одним проходом
- Результат можно поправить прямо в окне и сохранить
- Пакетная очередь: папка на сотню файлов, с паузой и продолжением после перезапуска
- Экспорт в Markdown, DOCX, HTML и TXT
- После установки работает офлайн: ничего никуда не отправляется
- Сама ставит себе Python, PyTorch и веса модели
- Определяет видеокарту и выбирает режим работы под неё
- Честно помечает, эталонное качество в этом режиме или приблизительное
- Русский и английский интерфейс целиком, включая сообщения установщика
Почему длина документа вообще проблема
Обычный путь распознавания длинного документа — нарезать его на куски, прогнать каждый отдельно и сшить результат. На этом шве и теряется всё: таблица, разорванная между страницами, перестаёт быть таблицей, заголовок отрывается от своего раздела, а сквозная нумерация сбивается.
Модель, на которой построено приложение, держит постоянный размер служебной памяти на любой длине — поэтому десятки страниц помещаются в один проход, и сшивать ничего не нужно. Отсюда и название: ограничение на длину документа снимается не хитрой нарезкой, а тем, что нарезки нет.
Установка, которая настраивает себя сама
Это главная часть работы и главная причина, по которой приложение вообще существует. Запустить модель распознавания — обычно означает поставить Python нужной версии, подобрать сборку PyTorch под свою видеокарту и версию драйвера, скачать почти семь гигабайт весов и разобраться, почему всё это падает. Для человека, которому просто нужно распознать договор, это непроходимый шаг.
Поэтому установщик делает всё сам и по порядку: изучает железо, выбирает режим и объясняет выбор, ставит собственный Python, не трогая системный, ставит PyTorch с подходящего индекса, качает веса с докачкой и зеркалом, патчит код модели и делает проверочное распознавание. Один раз — дальше приложение просто запускается.
Четыре режима и честность про качество
Модель выпущена в формате, который умеют считать только достаточно новые видеокарты, и весит почти семь гигабайт. Из этих двух фактов следуют все ограничения, и приложение не делает вид, что их нет.
На подходящей карте с достаточной видеопамятью работает полный режим — родной формат и эталонное качество. На карте послабее контекст урезается, на совсем слабой включается квантование: быстро, но качество ниже эталонного, и приложение прямо это пишет. Если подходящей карты нет вообще, работает процессорный режим — медленно, но с оригинальными весами и тем же эталонным качеством.
Режим показывается в интерфейсе с пометкой, эталонный он или нет. Это сознательное решение: программа, которая выдаёт приблизительный результат за точный, хуже программы, которая честно предупредила.
Как это устроено
- 1 Проба Приложение читает железо: модель видеокарты, её поколение, объём видеопамяти, версию драйвера, оперативную память и свободное место по дискам
- 2 Режим По этим данным выбирается один из четырёх режимов — и приложение объясняет выбор словами, а не кодом ошибки
- 3 Установка Ставится собственный Python, затем PyTorch с того индекса, который подходит именно этой карте и драйверу, затем веса модели — с докачкой и зеркалом
- 4 Патч С кода модели снимается жёсткая привязка к видеокарте, иначе на процессорном режиме он падает
- 5 Проверка Делается проверочное распознавание и замеряется реальная скорость — чтобы обещание в интерфейсе было измеренным, а не заявленным
- 6 Работа Дальше это просто приложение: очередь, редактор, экспорт. Модель загружается один раз и остаётся в памяти
На чём собрано
Нужно похожее?
Расскажите, что у вас происходит сейчас. Разбор задачи и оценка — бесплатно и ни к чему не обязывают.