Как распознать таблицу в PDF
Содержимое ячеек распознаётся как обычный текст, а структура таблицы теряется. Линии сетки остаются частью картинки: движок видит их как графику, а не как границы столбцов, и в текстовом слое от них не остаётся ничего. Вы получите поток значений в порядке чтения страницы, по которому работает поиск, но не сетку, которую можно посчитать. Отдельно неприятно то, что ошибка в цифре в таблице почти незаметна глазом.
Коротко о цифрах
- Распознаётся
- текст ячеек, координаты каждого символа
- Теряется
- строки, столбцы, объединённые ячейки, порядок по колонкам
- Линии сетки
- остаются графикой на картинке, в текстовый слой не идут
- Порядок выдачи
- потоком в порядке чтения страницы, без разметки
- Что проверять первым
- цифры: 0 и O, 1 и l, 5 и S путаются чаще прочего
Что именно получится, а что нет
- Получится: текст всех ячеек в файле, работающий поиск по значению, возможность скопировать фрагмент.
- Получится: заголовки столбцов найдутся поиском так же, как обычный абзац.
- Не получится: разбиение на строки и столбцы, объединённые ячейки, порядок обхода по колонкам.
- Не получится: числовые типы и формулы — распознаватель возвращает символы, а не числа.
- Не получится: XLSX из скана. Конвертер в Word требует текстового слоя, но структуру таблицы восстанавливать ему всё равно неоткуда.
Порядок работы с отсканированной таблицей
- Пересканируйте лист на 300 DPI, если исходник мельче: в таблицах шрифт обычно мелкий, и на 150 цифры сливаются.
- Распознайте документ, выбрав языки, на которых написаны заголовки и подписи.
- Извлеките текст в TXT и посмотрите, в каком порядке пришли значения — это подскажет, как их разбирать дальше.
- Сверьте числа с картинкой: единицы, семёрки и нули проверяйте в первую очередь.
- Если таблица нужна для расчётов, переносите значения вручную — так вы хотя бы увидите каждую цифру своими глазами.
Почему структура не восстанавливается
Для распознавателя страница — это изображение с областями текста. Он находит строки, определяет их порядок и записывает символы с координатами. Линия между двумя ячейками для него неотличима от подчёркивания или рамки вокруг заголовка: это графика, а не разметка. Никакого понятия «столбец» в результате не появляется, потому что в исходной картинке его тоже не было — оно есть только в вашей голове и в глазах.
Координаты символов, впрочем, сохраняются точно, и по ним таблицу теоретически можно собрать заново — это отдельная задача, которую решают специализированные инструменты разбора вёрстки. Наше распознавание её не решает и не делает вид, что решает: мы отдаём текстовый слой, который делает документ искомым, и честно говорим, где проходит граница.
Частые вопросы
Можно ли получить Excel из отсканированной таблицы?
У нас — нет. После распознавания в файле появляется текстовый слой, и конвертер в Word перестаёт отклонять документ по проверке на пустой текст, но разбиения на ячейки в этом слое нет, и взять его неоткуда.
Почему числа распознаются хуже слов?
У слова есть контекст: соседние буквы подсказывают модели правильный вариант. У числа контекста нет, каждая цифра стоит сама за себя, и спутанные нуль с буквой O или единица с латинской l ничем не выдают себя.
Поиск по значению в таблице будет работать?
Да, ради этого распознавание и делается. Введите номер или фамилию из ячейки — просмотрщик найдёт её и подсветит нужное место на странице, даже несмотря на то, что структуры таблицы в файле нет.
Влияет ли качество линий сетки на результат?
Слабо, потому что линии в текстовый слой всё равно не попадают. Гораздо важнее размер шрифта в ячейках и контраст печати: именно на них теряются цифры, а не на границах между столбцами.