PDF не содержит строк текста. Он содержит глифы с координатами, а линии, которые вы можете видеть, — это то, что собирает ваш глаз. Любой экстрактор должен также их собрать, из трех чисел на прогон и нескольких пороговых значений, и почти каждая странность в извлеченном тексте возвращается к одному из этих порогов, делая разумный вызов, который оказался неверным. Тот, который я исправил, когда писал эту фамилию, прервался на строке, «osei-» затем «Менсах» в «Осей-Менсах»: Дефис сохранил, как задумано, с местом, которое никогда не было там.
TL;DR: Извлечение — это линейная сборка, и значения, которые имеют значение, невидимы. Выполнение в пределах половины высотой шрифта друг от друга — одна строка; вертикальный промежуток, более чем в 1,45 раза превышающего обычный пробел страницы, начинается абзац; горизонтальный зазор под четвертью высоты шрифта не является пробелом в слове. избираться перезарядка вставить в редактор и варенье Для таблиц и кода. PDF-файл усреднения менее 12 символов Страница — это сканирование, и вместо этого требуется OCR, который говорит инструмент, а не вручает вам пустой файл. PDF в текст Запускается в браузере.
Зачем вообще нужен PDF-файл?
Потому что текст в нем был написан как инструкции рисования, и чтение их не является обратным написанием их.
В потоке контента написано "Установить этот шрифт в таком размере, переместить сюда, показать эти глифы" спецификация Описывает модель рисования, а текстовые операторы сидят рядом с теми, чтобы рисовать линии и заполнять фигуры. Нет объекта, означающего строку, абзац или столбец. что pdf.js Руки назад — это плоский список позиционированных прогонов, каждая со строкой, х, y, шириной и высотой шрифта в порядке нарисованной страницы. На тестовой странице этот заказ не читает порядок, и один прогон может быть одним символом.
Все остальное - реконструкция. Почти все это делают три порога, и их стоит знать, потому что они объясняют неудачи.
| Порог | стоимость | Что он решает |
|---|---|---|
| Линейная допуск | 0,5 х высота шрифта | Сидят ли две пробежки на одной линии |
| Соотношение аб | 1.45 x медианная щель страницы | Начинает ли вертикальный пробел новый абзац |
| пробел | 0,25 х высота шрифта | Является ли горизонтальный пробел в слове слова |
Каждая из них представляет собой долю размера текста, а не фиксированное количество точек, поэтому сноска и заголовок на одной странице получают разные допуски, а набор из 9 пунктов ведет себя как один из наборов в 14.
Почему необходим порог слова-пространства?
Потому что без него каждое слово разваливается.
Парсер PDF часто делит одно слово на несколько прогонов без пробелов между ними, для кернинга или для изменения шрифта в середине слова. Присоединение прогонов безусловно поворачивает filename в f i l e n a m e, йо- Соединение ни с чем вообще не разделяет слова вместе.
Таким образом, правило на ширину шириной, чем четверть высоты шрифта, считается пробелом, примерно шириной реального пространства слов в большинстве шрифтов. Ниже прогоны являются частями одного слова.
Это порог, который вы никогда не заметите, и сразу же заметите неудачу, обычно в заголовке с широким интервалом между буквами, где каждая буква достаточно далеко друг от друга, чтобы выглядеть как слово.
В чем разница между перезарядкой и консервантом?
Reflow дает вам прозу. Preserve дает вам страницу.
Вот один абзац, выложенный по трем строкам, за которым следует другой, пройдёт через оба режима:
--- preserve ---
The committee reviewed the figures and agreed that the
revised protocol should be circulated before the end of
the month.
A second paragraph begins here after a larger gap.
--- reflow ---
The committee reviewed the figures and agreed that the revised protocol should be circulated before the end of the month.
A second paragraph begins here after a larger gap.
Reflow соединил три строки в одно предложение и поместил пустую строку между абзацами. Сохранить, что все перерывы строки были выложены на странице, включая ту, что была в середине предложения.
| Используйте перезапуск | использовать консервировать |
|---|---|
| вставка в документ или редактор | таблица, где столбцы являются содержимым |
| Цитируя отрывок | Список кодов, где разрывы строк являются синтаксисом |
| Передача текста в скрипт или модель | Адресный блок или форма |
| все, что вы переформатируете в любом случае | все, где макет имеет значение |
Reflow - это значение по умолчанию, а правильное большую часть времени. Ошибка, которую совершают люди, заключается в том, что она использует его на столе, где соединение строк в прозу уничтожает единственную структуру, которую имела таблица.
Как он решает, где заканчивается абзац?
путем сравнения каждого вертикального разрыва с типичным типичным пробелом страницы.
Измеряется каждый промежуток между последовательными линиями, измеряется медиана, и любой разрыв более чем в 1,45 раза, чем медиана начинает новый абзац. Таким образом, страница с одним интервалом не возвращается как один абзац на строку, а двойная страница не возвращается как один блок.
Использование медианы, а не фиксированного числа, — это то, что заставляет эту работу работать в документах с разным руководством. Это также то, где она терпит неудачу: страница с очень небольшим количеством строк не имеет надежной медианы. Титульный лист, короткая записка или обложка часто возвращаются в виде одного абзаца, который является той же слабостью. слово преобразование имеет, по той же причине.
Исправление ручное и быстрое. Перерывы в абзаце очевидны для читателя так, как они не доходят до порога.
Что случилось со словами, разбитыми по строкам?
Они воссоединяются, и правило, для которого дефисы падают, — это предположение, которое чаще всего правильное.
Когда строка заканчивается дефисом, вопрос в том, поместил ли наборщик ее, чтобы сломать слово или принадлежит ли оно этому слову. Здесь используется правило: если следующая строка начинается строчной, дефис — это наборщик, и уходит; если оно начинается с заглавной или цифры, то дефис является частью текста и остается.
| Разбитые по линиям | Результат | Верно? |
|---|---|---|
self- + contained |
selfcontained |
да |
re- + encode |
reencode |
да |
client- + Side |
client-Side |
да |
Osei- + Mensah |
Osei-Mensah |
да |
COVID- + 19 |
COVID-19 |
да |
2026- + 03 |
2026-03 |
да |
well- + known |
wellknown |
нет |
Последняя строка не поправляется ни одним правилом. «Всегда известное» — сломленный на свой дефис и «известный», разбитый оправданием, выдает ту же пару строк, и, говоря, что им отдельно нужен словарь, а не порог. То же самое относится к «ре-» и «кодированию» выше, что справедливо только потому, что «reencode» — это не то слово, которое кто-то пишет.
Строки посередине — те, которые изменились во время написания этого руководства. Неразрывный случай, используемый для добавления пространства вместе с сохраненным дефисом, производя Osei- Mensah а 2026- 03, йо- Дефис принадлежит к слову в любом случае, поэтому пробел после него никогда не является правильным, и тест, в котором утверждался старый вывод, был исправлен вместе с поведением.
Как узнать, что PDF - это сканирование?
Считая символы на странице, с порогом достаточно низким, чтобы его срабатывало только подлинное сканирование.
Отсканированный документ представляет собой PDF-файл, полный изображений. Текстового слоя нет, поэтому извлечение ничего не возвращает, и полезный ответ — сказать это, а не отдавать пустой файл.
0 chars over 3 pages treated as a scan
30 chars over 3 pages treated as a scan
36 chars over 3 pages has a text layer
11 chars over 1 page treated as a scan
12 chars over 1 page has a text layer
Строка состоит из двенадцати символов на странице. Это не ноль специально: отсканированная страница часто содержит небольшой случайный текст со сканера, номер страницы, проштампованный программным обеспечением, или водяной знак. Порог в нулевом вызове будет вызывать эти документы извлеченными и возвращать три номера страниц.
Если ваш PDF является сканированием, следующим шагом будет OCR и измеренный счет того, что ломает OCR Имеет ли измеренный вариант этого: наклон три градуса стоит вам гораздо больше, чем низкое разрешение.
А как же колонки?
Они чередуются, и это предел, который стоит знать, прежде чем доверять какому-либо извлечению.
Строки сначала сгруппированы по базовой линии, поэтому два столбца текста, расположенные в одних и тех же вертикальных позициях, читаются, а не вниз. В тесте на страницу отчета из двух колонок результатом была каждая строка левой колонки, за которой сразу следовала строка рядом с ней:
Revenue rose in the third Headcount grew by four, quarter on the back of
two all in support. The hiring large renewals signed in plan for the fourth
Каждое слово присутствует. Порядок бесполезен, а выход читается как ерунда, а не как ошибка.
Академические газеты и газеты часто выдерживают это, потому что желоб между колоннами широк и достаточно регулярен, чтобы найти шаг сегментации страниц. Отчет с боковой панелью, цитатой или двухколонной таблицей часто не бывает.
Надежный подход к колоночному документу состоит в том, чтобы проверить первый абзац каждой страницы. Если предложения сращены, извлеките по одной колонке за раз, обрезав, или примите, что вы получаете мешок слов, а не прозу.
Можно ли получить таблицу из PDF?
Значения, да. Таблица нет, и причина в том, что в PDF почти наверняка нет таблицы.
Таблица в PDF обычно представляет собой текст, нарисованный с координатами, с некоторыми линиями, нарисованными вокруг нее. Строки представляют собой графические операции, в файле, соединяющих их с текстом, который они заключают, и ячейки не являются ячейками, это прогоны, которые выстраиваются в очередь. Таким образом, экстрактор видит строки текста и читает их через:
Region Q2 Q3 EMEA 412 455 AMER 388 401 APAC 120 166
Каждая фигура выжила. Вы не можете сказать по этой линии, к какой четверти принадлежат 412, не считая позиции и не зная форму оригинала.
Режим сохранения немного помогает, потому что он сохраняет структуру строки как разрыв строк, что, по крайней мере, говорит вам, где заканчивается каждая строка. Он по-прежнему не дает вам границ столбца.
Две вещи работают. равняется Метки: PDF, тщательно экспортированная из Word или InDesign с структурой доступности, имеет реальную разметку таблицы и конвертирует их правильно; это меньшинство, и вы обычно можете сказать, что документ был сделан тем, кто заботился. А для немаркированной таблицы, которая имеет значение, копирование ее в электронную таблицу вручную быстрее, чем борьба с любым инструментом, что является неудовлетворительным ответом, который пережил все попытки улучшить его.
Что делают маркеры страницы?
Они сохраняют номера страниц, что важнее, чем кажется, для всего, что вы будете цитировать или ссылаться на него.
С маркерами каждая страница помечена, а пустые страницы по-прежнему учитываются:
--- Page 1 ---
First page text.
--- Page 2 ---
--- Page 3 ---
Third page text.
Страница 2 не имела извлеченного текста и до сих пор появляется. Это преднамеренно: отсканированный лист между двумя текстовыми страницами в противном случае исчез бы, и каждая последняя номер страницы будет ошибкой.
С выключенным маркировками пустая страница не оставляет следов, а две страницы текста просто соединяются. Это правильный выбор, когда вы собираетесь куда-то вставить текст, а разбиение на страницы — это артефакт PDF, а не часть документа.
Извлеченный текст такой же, как оригинал?
персонажи есть. Все остальное ушло, и список стоит прочитать, прежде чем полагаться на вывод.
Жирный, курсив, шрифт, размер, цвет, таблицы в виде таблиц, изображений, верхних и нижних колонтитулов в отличие от основного текста, сноски в отличие от аннотирования, которое они аннотируют, ссылки в виде ссылок и порядок чтения любого сложного макета. Вы получаете символы и абзац.
Для большинства целей это совершенно правильно. Поиск, цитирование, счет, вставка скрипта, вставка в редактор: все те, что хотят слова и ничего больше.
Где он укусил документ, смысл которого частично живет в его форматировании. Контракт, где определенный термин выделен жирным шрифтом, спецификация, в которой выборка кода отличается своим шрифтом, отчет, в котором сноска изменяет то, что утверждает предложение. Извлеченный текст сглаживает все это, и ничто в выводе не говорит об этом.
Вы должны извлечь в текст или преобразовать в слово?
Текст Если машина прочитает его, word, если человек будет редактировать его.
Оба запускают одну и ту же сборку, поэтому качество слов идентично. Разница только в том, что пишется в конце: .txt файл или те же абзацы внутри ZIP-файла XML.
| Ты хочешь | обычай |
|---|---|
| grep, search или feed скрипт | PDF в текст |
| Подсчитайте слова или проанализируйте содержимое | PDF в текст |
| Отредактируйте прозу и отправьте ее | PDF в слово |
| Сохраняйте ровно макет | ни то, ни другое; получить исходный файл |
Последний ряд — это тот, который люди приходят, и никакая добыча не дает вам. Руководство по преобразованию слова Подробно почему-то подробно, с таблицей, которая возвращается в виде одной строки значений.
Насколько большой PDF он может обрабатывать?
Большой, а предел — это таб, а не формат.
Весь файл читается в память страниц и там анализируется, а извлеченный текст держится рядом с ним. Несколько сотен страниц обычного текста ничем не примечательно; сканирование на тысячу страниц с высоким разрешением — это другое предложение, потому что изображения приходят к поездке, хотя ни один из них не дает текста.
Если документ достаточно велик, чтобы беспокоиться, сигнал — это синтаксический анализ, а не извлечение. Вытаскивать текст из уже разобранных страниц дешево; внесение файла в синтаксический анализатор требует времени и памяти.
Почему это работает в браузере?
Поскольку синтаксический анализ не нуждается в сервере, а PDF-файлы, извлекаемые извлечения, редко являются общедоступными.
Файл читается с вашего диска на вкладку, разбирается там с помощью PDF.js, скомпилированного для Интернета, собрана в текст и передана обратно. Ни один запрос не несет документ, ничего не сохраняется, и копия нигде не может быть сохранена по условиям, которые вы не читали.
В рассматриваемых документах представлены контракты, выписки, медицинские письма, судебные документы, документы по эмбарго, внутренние отчеты. Обычная альтернатива загружает весь файл в сервис в обмен на операцию, которая является синтаксическим анализом и некоторыми арифметиками по координатам.
Стоимость памяти вкладки на очень больших файлах и без OCR для сканирования. Оба видны до того, как вы начнете, а не обнаруживаете впоследствии.



