Все статьи

Таблицы из PDF нейросетью без OCR: тест пяти способов и цены

Модели, которые сами видят PDF, прочитали сканы счетов без ошибок. Связка с OCR вышла вчетверо дороже, вдвое дольше и с ошибками.

СА

Сам Решу

29 октября 2026 г. · 6 мин чтения

Содержание

Чтобы достать таблицу из скана счёта, годами делали два шага. Сначала программа распознавания текста (OCR) превращает картинку страницы в текст, потом этот текст читает нейросеть или скрипт. 29 октября 2026 года OpenRouter, сервис, через который разработчики подключают сотни нейросетей одним ключом, опубликовал тест, из которого видно: первый шаг больше не нужен. Модели, которые сами видят PDF, прочитали сканы без единой ошибки, быстрее и дешевле, чем связка с распознаванием.

Я разработчик, у нас агент каждый день получает от клиентов счета, прайсы и акты в PDF. Ниже разбор теста с цифрами, наш опыт и короткая инструкция, как выбрать способ для своих документов.

Как проверяли

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

  • счёт на 10 позиций;
  • квартальный отчёт с объединённой шапкой «Fiscal 2026» над четырьмя кварталами, убытками в скобках и сносками у двух строк;
  • журнал отгрузок на 58 строк, который переходит на вторую страницу с повторённой шапкой;
  • отсканированный заказ на поставку;
  • нарочно плохой скан, где ячейка «Категория» растянута на шесть-девять строк.

Всего шесть страниц и 644 ячейки. Каждый способ прогнали один раз по всем пяти файлам одним и тем же запросом: нейросеть получает документ и строгую схему одной строки таблицы, а возвращает строки готовыми числами. Цены взяты из каталога OpenRouter на 8 октября 2026 года, в рублях ниже по курсу ЦБ на 29 октября (80,87 ₽ за доллар).

Результаты

Нейросети больше не нужен OCR: таблица способов

Как PDF попал к моделиВерно из 644₽ за 1000 страницСекунд на документ
GPT-6 Luna, читает PDF сама6446210,1
Claude Haiku 5.5, читает PDF сама644818,4
Gemini 3.8 Flash, читает PDF сама64465016,4
Платное распознавание mistral-ocr, потом DeepSeek V4.1 Flash64225025,0
Бесплатный конвертер текста, потом DeepSeek V4.1 Flash43415521,3

Цена за тысячу страниц пересчитана авторами с шести страниц, поэтому годится для сравнения способов, а не для сметы. Плотные страницы стоят дороже.

Модель сама смотрит на страницу

Три мультимодальные модели получили PDF как есть, без подготовки. Все три заполнили 644 ячейки из 644, включая оба скана. Подробности, ради которых обычно пишут код очистки, сделала схема:

  • сумма «6,067.00» вернулась числом 6067, которое можно сразу складывать;
  • убыток «(3,878)» вернулся отрицательным числом −3878, потому что в описании поля написали, что скобки значат минус;
  • сноски у названий сегментов убраны;
  • объединённую ячейку «Категория» модели повторили во всех 30 строках, когда об этом попросили в описании поля;
  • журнал с двух страниц пришёл одним списком с одной шапкой.

Выдуманных строк за 25 извлечений не было ни одной. Самыми дешёвыми без ошибок оказались GPT-6 Luna и Claude Haiku 5.5: обе стоят 0,10 доллара за миллион входных токенов. Gemini 3.8 Flash была так же точна, но на тех же файлах в восемь-десять раз дороже.

Тот же документ через распознавание

DeepSeek V4.1 Flash картинки принимает, а файлы нет, поэтому PDF до неё сначала доходил через распознавание. Здесь видно, сколько стоит лишний шаг.

С платным распознаванием mistral-ocr модель ошиблась в двух ячейках: оставила сноски, которые схема просила убрать. Распознавание само стоит 2 доллара (около 160 ₽) за тысячу страниц и прибавляется к каждому запросу. Поэтому дешёвая по токенам модель за ним обходится в 250 ₽ за тысячу страниц, вчетверо дороже GPT-6 Luna. Документ обрабатывался 25 секунд против 10: к ответу модели добавляется отдельный шаг распознавания.

С бесплатным конвертером cloudflare-ai вышло 434 ячейки из 644. Он достаёт только текстовый слой. Цифровые счёт, отчёт и журнал он прочитал правильно, а в сканах текстового слоя нет, и обе таблицы вернулись пустыми. Сервер при этом ответил, что запрос выполнен успешно, с обычным признаком конца ответа. Плохой скан на 30 строк дал ноль строк, и программа, которая разбирает папку со счетами, без отдельной проверки сохранила бы пустую таблицу и пошла дальше.

Вторая тихая ошибка: длинная таблица

Каждая строка, которую модель пишет в ответ, расходует лимит длины ответа. Журнал на 58 строк занял у разных моделей от 2 500 до 7 700 выходных токенов, то есть от 43 до 133 токенов на строку, при обычном потолке в 8 000. Самой многословной модели места почти не осталось.

Когда лимит в тесте нарочно занизили до 600 токенов, ответ оборвался. Без защиты программа падает на разборе обрывка. С включённой «починкой ответа», которая закрывает оборванный JSON, программа получает 5 строк из 58 и ничего не замечает. Авторы советуют закладывать около 150 токенов на каждую ожидаемую строку и отбрасывать ответ, который оборвался по лимиту.

Когда хватит бесплатной библиотеки

Для сравнения прогнали pdfplumber, бесплатную библиотеку, которой программисты годами разбирают PDF. В трёх цифровых файлах она нашла все таблицы, но вернула каждую ячейку текстом вроде «6,067.00» или «(3,878)». Двухуровневую шапку отчёта разрезала на две строки с пустотами, журнал отгрузок вернула двумя таблицами по страницам, а в сканах не нашла ничего.

Вывод авторов: библиотеки хватает, если все PDF цифровые и у таблиц одна строка шапки. Как только приходится писать код очистки под объединённые ячейки, переносы страниц и форматы чисел, схема для нейросети обходится дешевле в поддержке.

У нас отдельный шаг тоже мешал

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

Теперь текст берём из самого файла, а распознаём только страницы без текстового слоя. Если какие-то страницы прочитать не удалось, агент видит, каких именно не хватает, вместо пустоты. Следующий шаг: убрать и это распознавание. Агент уже умеет посмотреть на страницу PDF сам, как на картинку, и тест показывает, что так точнее и дешевле.

Как выбрать способ для своих документов

  1. Если модель умеет читать файлы, отдавайте ей PDF целиком, без распознавания. Это и точнее, и дешевле.
  2. Описывайте одну строку таблицы строгой схемой, а очистку пишите в описаниях полей: «без символа валюты и разделителя тысяч», «значение в скобках отрицательное», «объединённую ячейку повторить в каждой строке».
  3. Пустой результат считайте ошибкой. Счёт на сорок позиций не может вернуть ноль строк.
  4. Отбрасывайте ответ, который оборвался по лимиту длины, и закладывайте около 150 токенов на строку.
  5. Сверяйте число строк или итог с тем, что напечатано в документе.
  6. Перед выбором прогоните свои файлы: пять документов теста не исследование, и авторы сами пишут, что результат относится к их набору.

Связка «распознать, потом прочитать» была нужна, пока нейросети не видели картинок. Теперь она добавляет к каждому документу лишний круг, лишние деньги и новые места для ошибки.

Все цифры теста одним файлом: tablitsy-iz-pdf-marshruty.csv. В нём для каждого способа модель, число верных ячеек, цена в долларах и рублях за тысячу страниц и время на документ.

Первоисточник: OpenRouter, «How to Extract Tables from a PDF with an LLM», 29.10.2026, openrouter.ai/blog/tutorials/extract-tables-from-pdf-llm.

Применить на практике

Подключите свои сервисы и поручите эту задачу ИИ-агенту: без ручной рутины и таблиц.