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

Два PDF могут выглядеть совершенно одинаково.

Оба открываются как обычные страницы с текстом, таблицами и подписями.

Но из одного текст копируется за секунду, из второго не извлекается вообще, а из третьего получается набор слов в неправильном порядке.

Причина в том, что PDF в текст - не одна техническая операция.

Обычно нужно последовательно проверить три вещи:

  1. Есть ли в PDF текстовый слой.
  2. Насколько правильно текст распознан.
  3. Сохранился ли порядок чтения и структура страницы.

Эти проблемы похожи для пользователя, но требуют разных решений.

PDF - это не просто ещё один вариант Word

Возьмём два договора.

Оба выглядят одинаково: белые страницы, чёрный текст, таблицы, подписи и печати.

Первый договор сделали в Word и сохранили в PDF.

Внутри такого файла обычно остаются текстовые элементы. Программа может получить буквы, слова и информацию об их расположении на странице.

Второй договор могли распечатать, подписать, отсканировать и сохранить в PDF.

Человек снова видит текст.

Но внутри файла каждая страница может быть просто изображением.

Для человека документы выглядят почти одинаково.

Для программы это две разные задачи.

Первый вариант: в PDF уже есть текст

Самый простой случай - документ, внутри которого действительно хранится текст.

Такой PDF часто появляется после сохранения документа из Word, браузера, бухгалтерской программы или другой системы.

Человек видит готовую страницу, а программа может отдельно получить текстовые элементы этой страницы.

Для обычного извлечения это лучший сценарий.

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

В этом случае задача сводится примерно к следующему:

найти текстовые элементы в PDF -> определить их порядок -> собрать обычный текст.

Но даже наличие текстового слоя ещё не гарантирует идеальный результат.

К этому вернёмся ниже.

Второй вариант: PDF состоит из изображений

Другой путь выглядит так:

бумажный документ -> сканер -> PDF

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

На странице человек видит:

ДОГОВОР № 123

Но для программы там может не существовать отдельных букв Д, О, Г, О, В, О, Р.

Есть только изображение страницы.

Поэтому обычное извлечение может вернуть пустой результат.

Это не обязательно ошибка конвертера.

Иногда в PDF действительно нет текста, который можно было бы извлечь.

В таком случае нужен OCR

OCR - оптическое распознавание текста.

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

Получаются две принципиально разные операции.

Первая:

взять текст, который уже есть в PDF.

Вторая:

посмотреть на изображение страницы и заново распознать на нём текст.

После OCR в PDF может появиться отдельный текстовый слой, благодаря которому документ становится доступным для поиска, выделения и копирования.

Поэтому внешне одинаковые PDF могут находиться как минимум в трёх состояниях:

  1. В документе изначально есть текст.
  2. В документе находятся только изображения страниц.
  3. В документе есть изображения страниц и текстовый слой, созданный распознаванием.

Для пользователя разница обычно становится заметна только при попытке скопировать или найти текст.

Как за минуту проверить свой PDF

Для первой диагностики отдельный сервис не нужен.

Попробуйте выделить одно слово

Если мышкой выделяются отдельные слова и строки, текстовый слой, скорее всего, существует.

Если выделяется только область страницы или ничего не выделяется, возможно, перед вами изображение.

Попробуйте поиск

Нажмите Ctrl+F и введите слово, которое точно видно на странице.

Если программа его находит, доступный для поиска текст в документе есть.

Скопируйте один абзац

Вставьте его в обычный текстовый редактор.

Этот тест показывает не только наличие текста, но и его качество.

На странице может быть написано:

Поставщик обязан передать товар в течение пяти рабочих дней.

После копирования вы можете получить ровно эту строку.

А можете получить слова с ошибками, странные переносы или неправильный порядок.

В таком случае первая проблема уже решена - текст существует.

Начинается следующая.

Текстовый слой ещё не гарантирует правильный текст

Предположим, бумажный договор отсканировали, после чего запустили распознавание.

Теперь текст можно выделять, искать и копировать.

Это всё равно не означает, что он распознан без ошибок.

Например:

  • 1 может превратиться в I;
  • 0 - в O;
  • фамилия может быть распознана неправильно;
  • часть символов может исчезнуть;
  • цифры в реквизитах могут измениться.

Adobe отдельно рекомендует проверять результат OCR и исправлять сомнительно распознанные слова.

Поэтому наличие текстового слоя отвечает только на вопрос:

Можно ли получить текст?

Но не отвечает на другой:

Можно ли доверять полученному тексту без проверки?

Если нужно сделать краткое содержание статьи, отдельная ошибка может быть некритичной.

Если из договора извлекаются суммы, банковские реквизиты или номера документов, цена ошибки уже другая.

Есть ещё третий уровень - структура

Для обычного одноколоночного документа схема кажется простой:

есть текстовый слой - извлекаем текст;
текстового слоя нет - используем OCR.

Но PDF создавался прежде всего для сохранения внешнего вида страницы.

Из этого не следует, что содержимое обязательно хранится в идеальном порядке для обратного превращения в линейный текст.

На странице человек мгновенно видит заголовок, два абзаца, таблицу, подпись справа и примечание внизу.

Программе ещё нужно определить, в каком порядке всё это читать.

Особенно хорошо проблема видна на колонках

Представим страницу:

Колонка 1                 Колонка 2

Первый абзац              Четвёртый абзац
Второй абзац              Пятый абзац
Третий абзац              Шестой абзац

Человек понимает структуру страницы и читает сначала левую колонку, затем правую.

После простого извлечения может получиться:

Первый абзац
Четвёртый абзац
Второй абзац
Пятый абзац
Третий абзац
Шестой абзац

Ни одного слова не потеряно.

Но документ собран неправильно.

Это не проблема OCR.

Все символы существовали изначально.

Ошибка возникла на уровне восстановления порядка чтения.

В Acrobat существует отдельный инструмент настройки порядка чтения.

Это хороший пример того, что наличие текста и правильная структура - разные задачи.

С таблицами происходит то же самое

Человек видит:

ТоварКоличествоЦена
Стол315 000
Стул104 000

Простой механизм извлечения может получить:

Товар
Количество
Цена
Стол
3
15 000
Стул
10
4 000

Все значения сохранились.

Но связь между строками и столбцами исчезла.

Для одних задач этого достаточно.

Для других нужна именно структура таблицы.

Тогда задача становится сложнее простого PDF в текст: требуется восстановить отношения между элементами страницы.

Один PDF может содержать несколько типов страниц

Есть ещё один неприятный сценарий.

Например, договор состоит из 20 страниц:

  • первые 15 экспортированы из Word;
  • следующие 3 страницы отсканированы;
  • одна страница является фотографией подписанного приложения;
  • на последней есть обычный текст и вставленная картинкой таблица.

Для пользователя это один файл.

Для системы внутри него находятся сразу несколько разных задач.

На одних страницах текст можно извлечь напрямую.

На других требуется OCR.

Какая-то информация может существовать только в изображении.

Поэтому вывод о целом документе нельзя надёжно делать только по первой странице.

Простая диагностическая модель: три проверки

Удобнее всего смотреть на PDF последовательно.

Уровень 1. Доступность текста

Есть ли внутри страницы текстовые элементы, которые можно получить напрямую?

Если нет - вероятно, требуется распознавание изображения.

Уровень 2. Качество текста

Если текст существует, насколько ему можно доверять?

Особенно если слой появился после OCR.

Уровень 3. Структура

Если все слова получены правильно, сохранился ли порядок абзацев, колонок, таблиц и других блоков?

Только после этих трёх проверок имеет смысл оценивать качество преобразования PDF в текст.

Что делать, если текст из PDF не извлекается

Для практической проверки достаточно такого порядка.

1. Попробовать выделить текст

Если отдельные слова выделяются, текстовый слой, скорее всего, существует.

2. Использовать поиск

Найти через Ctrl+F слово, которое точно видно на странице.

3. Скопировать один абзац

Если текст появляется, проверить символы и порядок предложений.

4. Проверить несколько страниц

Особенно если документ собирался из разных источников.

5. Только потом решать, нужен ли OCR

Если страницы действительно являются изображениями, требуется распознавание.

Если текст уже существует, но перемешан, добавление OCR не обязательно исправит проблему.

Здесь может требоваться работа со структурой документа.

Когда повторный OCR не поможет

OCR решает конкретную задачу - распознаёт символы на изображении.

Поэтому он полезен, когда в PDF нет нормального текстового слоя или существующий слой распознан плохо.

Но OCR не является универсальным ремонтом любого PDF.

Если слова уже извлекаются правильно, а проблема в колонках, таблицах или порядке блоков, нужно восстанавливать структуру.

Если в документе есть диаграмма или схема, простого текстового слоя тоже может быть недостаточно, потому что часть смысла хранится в визуальном расположении элементов.

Именно поэтому два внешне похожих PDF могут требовать совершенно разной обработки.

Короткий вывод

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

Нет текста вообще - скорее всего, перед вами скан и нужен OCR.

Текст есть, но в нём ошибки - нужно проверять качество распознавания.

Слова правильные, но порядок сломан - проблема в структуре и порядке чтения.

Это три разных уровня.

И выбор инструмента зависит не от расширения .pdf, а от того, что на самом деле находится внутри конкретного документа.

Частые вопросы

Почему я вижу текст в PDF, но не могу его скопировать?

Видимые буквы могут быть частью изображения страницы.

Человек воспринимает их как текст, но внутри PDF отдельных текстовых символов может не быть.

Для такого документа требуется оптическое распознавание.

Как быстро проверить наличие текстового слоя?

Попробуйте выделить отдельное слово, выполнить поиск по документу и скопировать абзац в текстовый редактор.

Если эти действия работают, текстовый слой, скорее всего, присутствует.

Что такое OCR?

OCR - оптическое распознавание текста.

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

Почему текст извлекается, но слова идут в неправильном порядке?

Потому что наличие всех текстовых элементов ещё не гарантирует правильный порядок чтения.

Проблема особенно заметна в документах с колонками, таблицами и сложным расположением блоков.

Если PDF уже прошёл OCR, можно ли полностью доверять его тексту?

Нет.

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

Чем выше цена ошибки в дальнейшей обработке, тем важнее отдельная проверка результата.

Поможет ли повторный OCR, если текст уже есть, но таблица развалилась?

Не обязательно.

Если символы распознаны правильно, а проблема заключается в расположении строк, столбцов или блоков, требуется восстановление структуры документа, а не просто повторное распознавание текста.

Бесплатный инструмент

Нужно получить текст из PDF?

Загрузите PDF и извлеките существующий текстовый слой прямо в браузере. Без регистрации и без отправки содержимого файла на сервер Brain4.

Открыть PDF -> текст

FAQ

Почему я вижу текст в PDF, но не могу его скопировать?

Видимые буквы могут быть частью изображения страницы. В таком PDF нет доступного текстового слоя, поэтому для получения текста требуется оптическое распознавание.

Как быстро проверить наличие текстового слоя в PDF?

Попробуйте выделить слово, выполнить поиск по документу и скопировать абзац. Если эти действия работают, текстовый слой, скорее всего, присутствует.

Что такое OCR в PDF?

OCR - оптическое распознавание текста. Программа анализирует изображение страницы, распознаёт символы и может создать доступный для поиска текстовый слой.

Почему текст из PDF извлекается в неправильном порядке?

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

Можно ли полностью доверять тексту PDF после OCR?

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

Поможет ли повторный OCR, если текст уже есть, но таблица развалилась?

Не обязательно. Если символы распознаны правильно, а проблема заключается в расположении строк, столбцов или блоков, требуется восстановление структуры документа, а не повторное распознавание текста.

Серия

Документы для нейросети

  1. 10Почему из одного PDF текст извлекается, а из другого нет
  2. 20Что лучше загружать в нейросеть: PDF, текст или Markdown
  3. 30Как превратить Word и Excel в Markdown для нейросети