Постановка
Наш конвейер извлечения берёт текстовый слой PDF, если ему можно доверять, и распознаёт страницу, если нельзя. Вопрос: насколько итоговый текст лучше, чем просто прогнать каждую страницу через OCR? И можно ли поручить такую проверку LLM вместо разметки?
Набор — 42 страницы контрольного корпуса, 45 151 знак эталона. Половина страниц — сгенерированные документы (письма, протоколы, счета, реестры) в электронном и «сканированном» вариантах. Остальное — публичные документы ФНС, МЧС, МГУ, Роспотребнадзора, ЦБ и мэрии Москвы. Колонтитулы из сравнения исключены с обеих сторон.
Каналы:
- наш текст — итог конвейера: слой PDF там, где он надёжен, иначе распознавание;
- сырой слой PDF — текст как есть, без нашей обработки;
- Surya 2 — распознавание всей страницы по картинке.
Судья — Qwen3.8-27B. Он видит изображение страницы и два текста и отвечает, какой ближе к картинке, перечисляя ошибки содержания и структуры.
Объективная сверка
| Канал | CER | Числа совпали |
|---|---|---|
| Наш текст | 0.29 % | 415 / 417 |
| Surya 2, вся страница | 5.77 % | 406 / 417 |
| Сырой слой PDF | 17.96 % | 269 / 301 |
Сырой слой — худший канал: на части PDF он вообще непригоден (CER 86 % на руководстве ФНС), на других перемешан порядок колонок. Наш разбор превращает его в лучший источник. Surya в среднем хороша, но на отдельных страницах теряет треть текста: 34 % на двухколоночной статье, 49 % на памятке МЧС.
По страницам: на 24 наш текст точнее Surya, на 18 тексты одинаково точны, страниц, где точнее Surya, нет ни одной.
Что сказал судья
| Ситуация | Страниц | Судья выбрал Surya | Судья выбрал наш текст |
|---|---|---|---|
| Наш текст точнее | 24 | 18 | 6 |
| Одинаковая точность | 18 | 17 | — |
| Точнее Surya | 0 | — | — |
На одной странице судья не дал вердикта. На статье, где у нас 0 % ошибок, а у Surya 34 %, судья выбрал Surya.
Почему так
Судья оценивает похожесть на картинку, а не верность текста. Surya переносит строки так, как они нарисованы на странице, а наш текст склеивает строки абзаца. Для судьи визуальные переносы весомее, чем пропущенный абзац. В рекомендациях он прямо пишет: «использовать Surya, так как он лучше сохраняет визуальное разделение строк».
Ещё одна ловушка — самой проверки, а не судьи. Первая версия отчёта брала таблицы нашего канала плоским текстом, и колонки в нём перемешивались. Это дало ложные расхождения: 23.6 % на расписании МГУ и 62.6 % на памятке МЧС вместо 0 %. После того как таблицы стали сравниваться построчно по ячейкам, как в официальной метрике, ошибки исчезли.
Цена
Один вердикт — 30–60 секунд на странице: 42 страницы — около 25 минут работы 27B-модели.
Итог
- Маршрутизация «слой PDF, где можно, иначе OCR» дала текст в 20 раз точнее, чем OCR всей страницы.
- LLM-судья без эталона для выбора канала не годится: он систематически предпочитает визуально похожий текст верному.
- Судью можно использовать как поисковик подозрительных мест — его списки ошибок полезны для разбора. Но решение принимается по эталону или по совпадению двух независимых распознаваний.
- Перед сравнением нужно убедиться, что обе стороны приведены к одному виду, иначе «ошибки» окажутся артефактом сравнения.