Если у вас есть архив сканов, вы, скорее всего, уже видели что-то подобное. Если не видели — возможно, просто не заглядывали в то, что система извлекла из ваших документов. Большинство и не заглядывает: ответы же приходят.
Почему так получается
Автоматический выбор распознавания поставил движок, в алфавите которого кириллицы нет вовсе. Он добросовестно подобрал из своих знаков похожие по начертанию — латинские и греческие буквы. Результат проходит все формальные проверки: текст извлёкся, символы есть, ошибок в журнале нет.
Дальше этот текст уходит в поиск. Вектор от такой строки не похож ни на что осмысленное, а полнотекстовый поиск не найдёт в ней ни одного русского слова. Документ формально в базе, фактически его там нет — и никто об этом не узнает, пока не спросит ровно про него.
Движок мы сознательно не называем: воевать с чужим продуктом незачем, а урок универсален. Настройки по умолчанию в большинстве конвейеров разбора рассчитаны на другой язык. Русский здесь ломается не потому, что он сложный, а потому, что о нём не подумали заранее.
Почему «включить русский везде» — тоже не решение
Следующий естественный шаг — принудительно распознавать всё с русским языком. На документе без текстового слоя, то есть на честном скане, это спасает документ целиком: 3315 символов кириллицы вместо 498.
А на нормальном документе, где текстовый слой уже есть и он точный, принудительное распознавание ломает хорошее. Знак рубля превращается в другой символ, плывёт регистр букв. Идеальные данные меняются на приблизительные, и об этом снова никто не узнает.
Глобальная настройка распознавания неизбежно неверна для половины корпуса. Политика выбирается для каждого документа отдельно: есть ли пригодный текстовый слой, покрывает ли он содержимое, не мусор ли он из битой кодировки. Это не удобство, а единственный работающий вариант. Как это устроено у нас — в разборе про docling-shim.
Вопрос по-русски к документу на английском
Смешанный корпус — обычное дело: паспорта оборудования и спецификации на английском, переписка и регламенты на русском. Спрашивать при этом хочется на одном языке, и переводить документы заранее никто не будет.
Это работает. Вопрос по-русски к англоязычному документу находит нужный фрагмент с оценками релевантности от 0,70 до 0,93. Для поиска по смыслу язык документа и язык вопроса могут не совпадать.
Где не работает — и как с этим жить
Одно исключение, и мы приводим его с цифрой: имена собственные, переведённые на русский. Один и тот же вопрос, две формулировки:
| Как названо имя в вопросе | Оценка релевантности |
|---|---|
| Так же, как в документе | 0,95 |
| Переведено на русский | 0,0034 |
Нужный фрагмент при этом находится: векторный поиск его поднимает. А потом переранжирование его отбрасывает. Порогом это не лечится: 0,003 — это шум, и любой порог, который его пропустит, пропустит вместе с ним весь мусор.
Отсюда правило, которое работает и в чужих системах: спрашивать можно на любом языке, но имена собственные оставлять как в источнике. Артикулы, марки, названия узлов, фамилии, названия компаний — в той форме, в какой они написаны в документе.
Это не отговорка, а граница с известной формой. Ограничение с точной цифрой и рабочим обходным приёмом полезнее, чем достоинство без цифры: с ним понятно, что делать.
На русских деловых документах
Большая часть замеров выше снята на эталонном корпусе. Отдельно мы проверяли русские деловые документы — смету, гарантийные условия, паспорт кондиционера — с запросами вроде «страна-изготовитель» или «сколько лет гарантия». После настройки конвейера ни один из двенадцати запросов не остался без ответа; до неё пустой ответ получала треть.
Двенадцать запросов — не статистика, а санитарная проверка, и мы так её и называем. Процентов на деловых документах здесь нет, потому что для процентов нужен размеченный набор побольше, а приписывать эталонные цифры чужому корпусу мы не будем.
Голос
Голосовой запрос на русском работает с телефона. Одна деталь, которой нет в описаниях продуктов: чтобы голос заработал, пришлось переводить вход на защищённое соединение. Не ради безопасности как таковой — мобильные браузеры просто не дают доступ к микрофону незащищённому источнику. Кнопка микрофона при этом не выдаёт ошибок: она просто ничего не делает. Подробности — в разборе про голосовой контур.
Хорошая иллюстрация того, что в реальной системе половина работы уходит на условия, о которых в описаниях не пишут.
Коротко
Русский язык здесь не «поддерживается». Под него отдельно настроены разбор документов и поиск, и по каждому из них выше приведён замер вместе с условиями. Строка «ИHΦopmaung onpogaBue» — хороший тест для любой системы, которой вы собираетесь отдать архив: загрузите туда свой скан и посмотрите, что она извлекла. Не ответ — именно извлечённый текст.
Отсюда один шаг до вопроса, который задают реже, чем стоило бы. Если документ может молча превратиться в мусор при загрузке, что мешает так же молча испортиться резервной копии? Когда вы последний раз разворачивали бэкап.