Я преобразовал двухстраничный отчет в Word, чтобы что-то проверить, и второй абзац вернулся как это:
Выручка выросла на третьем численности, выросла на четыре, четверть за счет двух в поддержку. Найм крупных продлений подписан на четвертый август. Край ровно. не меняется на шести ролях.
Две колонки совершенно обычной прозы, читаются через линию за строчкой, поэтому каждое предложение сращивается в ту, что находится рядом с ней. Ничего не сломалось. Конвертер сделал именно то, что может сделать конвертер, и разрыв между этим и тем, что фраза «pdf в слово» является всем предметом этого руководства. Каждый приведенный ниже результат был получен от запуска преобразования, а не из его описания.
TL;DR: PDF хранит глифы в координатах. Он не хранит абзацы, столбцы, таблицы или заголовки, поэтому конвертер должен делать выводы из позиций, и некоторые из этих выводов неверны в том, как вы можете предсказать. Измерен в отчете об испытаниях: два столбца чередуются по строке, таблица из четырех строк, сплющенная до одной строки, q2 Q3 EMEA 412 455 Amer 388 401 APAC 120 166quot; заголовок, слитый в абзац ниже, и страница без текстового слоя вообще ничего не производила. То, что вы надежно получаете в ответ, — это редактируемая проза в порядке страниц, что для большинства вакансий — то, что вы хотели. выше Конвертер PDF в Word Делает это в браузере, поэтому документ не загружается.
Что хранится внутри PDF?
Инструкция по покраске страницы, а не документа.
В потоке контента PDF-файла написано, что такие вещи, как «Установить этот шрифт в таком размере, перейти к x 60, y 720, показать эти глифы». выше сама спецификация это описание модели рисования, а текстовые операторы сидят рядом с теми, чтобы рисовать линии и заполнять фигуры. В файле нет объекта, который означает «параграф», нет объекта, который означает «это таблица», и ничего, что записывает, что два блока текста являются столбцами, а не широкими. Формат был разработан таким образом, что страница печатается одинаково везде, и она достигает, описывая страницу как метки, а не как содержимое.
Таким образом, конвертер получает список позиционированных прогонов. pdf.js, синтаксический анализатор, на котором он работает, возвращает их обратно, как их рисует страница. В тестовом файле первая страница выпустила 34 из них, а вторая — 4. Каждый запуск представляет собой строку с x, y, шириной и высотой шрифта, а порядок, в котором они приходят, — это порядок, на котором была нарисована страница, что не обязательно является порядком, который вы бы их прочитали.
Все, что нужно в документе Word, чего не имеет в PDF, конвертер должен реконструировать из этих четырех чисел. Эта реконструкция — это все, что следует, в том числе везде, где она идет не так.
Как преобразователь перестраивает абзацы из координат?
В два прохода, с порогом на каждом.
Первая группа проходов сталкивается с линиями по базовой линии: прогоны, значения Y которых находятся в пределах половины высоты шрифта друг от друга, равными одной строке. Вторые группы линий на абзацы по вертикали между ними. Промежуток, превышающий примерно 1,45, превышающий обычный интервал между строк, начинается новый абзац, где «обычный» — это медианный разрыв на этой странице, а не фиксированное число, поэтому правило адаптируется к документу, установленному в 9 пунктах или 14 пунктах.
Внутри линии есть третий порог. PDF.js часто делит одно слово на несколько прогонов без пробелов между ними, поэтому присоединение прогона превращает в пробел «имя файла» в «f i l e n a me» Исправление состоит в том, чтобы вставлять пробел только тогда, когда горизонтальный зазор превышает четверть высоты шрифта, которая составляет около ширины реального пространства слова.
Эти три числа решают почти все о выходе. Когда результат хороший, они были правы. Когда заголовок придерживается абзаца под ним, разрыв был менее 1,45 раза, и в правиле указано один абзац.
Почему две колонны выходят чередующимися?
Потому что единственным доказательством для столбца является горизонтальный зазор, и группировка линий сначала смотрит на вертикальное положение.
Два блока на моей тестовой странице были на x 60 и x 320, с их строками на общих базовых линиях. В группе было шесть базовых линий, каждая из которых несла текст с обеих сторон, и читала каждую поперек. Результатом является абзац в верхней части этого руководства: каждая строка левой колонки, за которой следует строка рядом с ней.
Это та же ошибка, что и зашифрованные столбцы в OCR, и у него тот же корень: порядок чтения — это суждение о макете, сделанном из геометрии, чем-то, что не может читать.
Преобразователи, которые обрабатывают столбцы, сначала делают шаг сегментации страницы, ища согласующуюся вертикальную полосу пробелов, выполняющую высоту страницы, и разделяя страницу там перед любой группировкой строк. Это работает на газете или журнальной газете, где желоб широк и обычен. Он менее надежен для обычных случаев, когда боковая панель, цитата из двух столбцов или таблица из двух столбцов разбивают полосу.
Если в вашем документе есть столбцы, практический ответ состоит в том, чтобы проверить вывод и зафиксировать первый абзац каждой страницы или преобразовать столбец в то время, если документ достаточно длинный, чтобы оно того стоило.
Что происходит со столом?
это становится приговором.
В моем тестовом файле была четырехрядная таблица с тремя столбцами. Вот все после преобразования:
Region Q2 Q3 EMEA 412 455 AMER 388 401 APAC 120 166
Каждая ценность сохранилась. Структура не была. Вы не можете сказать из этой строки, что 412 является цифрой Q2 EMEA без подсчета позиций и формы оригинала.
Причина в том, что большинство PDF-файлов также не содержат таблиц. Таблица в PDF обычно представляет собой текст, нарисованный с координатами, с некоторыми линиями, нарисованными вокруг нее, а линии — это графические операции, в файле которых нет ничего, что соединяет их с текстом, который они заключают. Преобразователь должен был бы обнаружить выравнивание чисел, сделать вывод о сетке и решить, какие прогоны принадлежат к какой ячейке, а это проблема исследования, а не в анализ.
Некоторые PDF-файлы имеют реальную структуру, с помощью добавленных тегов для доступа, а те, которые преобразовываются гораздо лучше. Они меньшинства: меченые PDF-файлы поставляются из-за тщательного экспорта из Word или InDesign, а не от драйвера печати.
Если таблица вам нужна, скопируйте ее в таблицу вручную или преобразуйте PDF в текст и измените его там. Преобразованный файл Word не даст вам ячейки.
Почему мой заголовок слился с абзацем?
Потому что пространство под ним было недостаточно большим, чтобы сбить правило абзаца.
На второй странице тестового файла заголовок «Примечания» располагается на 40 точек над основным текстом, а линии тела находились на 18 точек друг от друга. Этот разрыв в 2,2 раза больше, чем между линиями, что должно было их разделить, и это не так, потому что медианный разрыв на странице всего с четырьмя прогонами не является надежной оценкой чего-либо. Выход был:
Notes Note 14 covers intercompany revenue and the treatment of
deferred items carried over from the prior year.
Это честная форма всей проблемы. Пороговые правила хорошо работают на странице с достаточным количеством текста, чтобы установить базовый ритм и плохо на скудном. Титульный лист, короткая записка, обложка или форма часто возвращаются в виде одного абзаца.
Это также проще всего исправить постфактум. Заголовки очевидны для читателя-человека, и нажатие Return в нужном месте занимает секунду, что меньше времени, чем любая утварь, чтобы сделать это правильно.
Что происходит со сканированной страницей?
Ничего не выходит, и это правильное поведение.
На третьей странице моего тестового файла вообще не было текстового слоя, только серый прямоугольник стоял для сканирования. PDF.js вернул нулевые запуски, и конвертер выдал для него нулевые абзацы.
Страница все еще считается. Он отображается в файле Word как пустая страница, поэтому страница ломается после того, как она остается в соответствии с оригиналом, что имеет значение, когда кто-то работает с номерами страниц. Конвертер, который тихо уронил его, будет смещаться каждую более позднюю страницу на одну.
PDF-файл, все страницы которого являются изображениями, являются сканированием, и ни один конвертер не может извлечь из него текст, потому что нет текста для извлечения. Это нужно, чтобы OCR, который читает изображение букв и угадывает символы и приносит свою собственную частоту ошибок. Измеренная версия этой торговли находится в руководство по тому, что ломает OCR: Наклон выше трех градусов - это то, что портит сканирование, а не разрешение.
Полезное правило: откройте PDF и попробуйте выбрать предложение с помощью курсора. Если текст выделяется, конвертер может его прочитать. Если вы получаете прямоугольник выбора по изображению, вам сначала нужен OCR.
Что внутри .docx выходит?
Три файла в zip, и это действительно все, что нужно.
.docx — это архивная конвенция об открытой упаковке, стандартизированная как ЭКМА-376: zip, содержащий части XML, плюс манифест, говорящий о том, что представляет собой каждая часть. Собственный Microsoft Обзор формата Ходит по тем же трем частям. Минимальный, который открывается в виде документа Word, — это три записи:
| Часть | определенный |
|---|---|
[Content_Types].xml |
Объявляет тип носителя каждой части пакета |
_rels/.rels |
Баллы в основной части документа |
word/document.xml |
сам контент |
Все остальное, что обычно несет в себе файл Word, стили, шрифты, темы, настройки, определения нумерации являются необязательными. Оставьте их, и читатель применит свои значения по умолчанию.
Тестовый документ, 83 слова на трех страницах, пришел к 1305 байтам .docx, word/document.xml составляет 1169 байт. Я открыл его с помощью собственного устройства чтения документов Apple, который использует TextEdit и Pages, и он отображал каждый абзац в порядке с нетронутым разрывом страницы. Минимальная упаковка не деградированная.
Одна деталь в этом XML имеет большее значение, чем кажется. Каждый прогон пишут с xml:space="preserve", йо- Без него начало пробега или заканчивающееся пробелом теряет его, и каждая строка, обернутая в оригинал, возвращается с последним словом, соединенным с следующей.
Что происходит с изображениями?
Они отбрасываются, и в Word файл не упоминается.
Написанный здесь пакет состоит из трех частей, и ни одна из них не является медиа-партией. Логотип, диаграмма, отсканированная подпись, скриншот, встроенный в отчет: все ушли, без заполнителя, где они были. Текст, который их окружал, закрывается, как будто они никогда не были там.
Это следствие той же конструкции, которая делает выход невелики и надежными. Перенос изображения по значению означает извлечение его из PDF-файла, принятие решения о его формате, запись в word/media/, добавление для него типа содержимого, добавление части отношения и размещение элемента чертежа в нужной точке потока. Каждый из них является местом, где читатель может отклонить файл, а текстовый процессор .docx отказывается открывать, что хуже, чем у одного из логотипов.
Для документов, где изображение является содержанием, а не украшением, это самое важное. Диаграмма в отчете преобразуется в ничего, и читатель Word не может знать, что диаграмма когда-либо была там. Проверьте оригинал вместе с преобразованием, когда фигура упоминается в прозе.
Почему файл иногда вообще отказывается открывать?
Управляющие символы, которые содержат XML, и PDF-файлы содержат.
Текстовый слой PDF подбирает символы из того, что он его создал: формы каналов из конвейера печати, нулевые байты из неработающей кодировки, другие коды управления C0, которые ничего не значат в документе. XML 1.0 Не позволяет большинство из них, даже избежав: диапазон символов, который разрешено спецификации, начинается в TAB, NewLine и Carren Return и пропускает остальную часть блока C0.
Неудача не грациозна. Word не предупреждает и не роняет персонажа, он отказывается открывать файл и говорит, что содержимое нечитаемо. Таким образом, конвертер удаляет эти символы перед записью, а не пытаясь избежать их. Они не имели смысла в источнике, и они будут стоить вам весь документ.
Если вы когда-нибудь получаете .docx, который текстовый процессор отклоняет как нечитаемое, это первое, что нужно подозревать, и именно поэтому конвертер, пишущий XML вручную, должен вообще об этом думать.
Должны ли вы конвертировать в слово или в обычный текст?
Word, если вы собираетесь редактировать его, пишите, если вы собираетесь его обрабатывать.
Они разделяют одно и то же. Разница в том, что пишется в конце: один пишет абзацы в zip xml, другой записывает их в файл .txt.
| Ты хочешь | обычай | потому что |
|---|---|---|
| Отредактируйте прозу и отправьте ее | PDF в слово | Структура абзаца, разрывы страниц, что-то, что может открыть коллега |
| Поиск, grep или wef его в скрипт | PDF в текст | Нет разметки на пути |
| Сохраняйте ровно макет | Ни | Измените PDF или получите исходный файл |
| читать скан | OCR первый | Нет текстового слоя для извлечения |
Третий ряд стоит того, чтобы сидеть. Если важен макет, преобразование в Word — неправильное направление, потому что преобразование — это место, где макет потерян. Спросите того, кто отправил PDF-файл для файла, из которого он был экспортирован. Он принимает одно сообщение, и это единственный подход, который сохраняет форматирование.
Сколько времени занимает преобразование?
Достаточно долго, чтобы прочитать файл, и уже не так.
Шага кодирования и обработки изображений не существует. Работа заключается в анализе структуры PDF, вытягивании текстового содержимого каждой страницы, группировкам и сериализации XML в zip. Тестовый файл занял несколько миллисекунд, что не является полезным числом, потому что это три страницы. Отчет в двести страниц ограничен PDF.js, анализирующим его, который примерно линейен по количеству страниц и быстро.
То, что вы замечаете в большом документе, — это память, потому что весь файл хранится на вкладке браузера вместе с анализированной структурой. Это настоящий потолок здесь, а не скорость.
Что нужно проверить в выводе?
Четыре вещи, в том порядке, в которых они, скорее всего, будут неправы.
- Первый абзац каждой страницы. Здесь отображаются слияния столбцов и заголовков.
- Любая таблица. Подтвердите наличие номеров, затем примите, что сетка исчезла, и перестройте ее, если она вам нужна.
- Слова, прописанные через дефис, на концах строки. Слово, прорезанное через строку в PDF, возвращается с дефисом в середине.
- Количество страниц. Он должен совпадать с оригиналом, включая любые пустые или отсканированные страницы.
Этот список занимает минуту на десятистраничном документе и является разницей между файлом, который вы можете отправить, и тем, который тихо содержит сложенное предложение.
Почему это работает в браузере?
Потому что документы, которые люди конвертируют, — это контракты, заявления, письма, медицинские результаты и вещи, находящиеся под эмбарго.
Преобразование представляет собой синтаксический анализ и zip, которые отлично справляются с браузером. Файл читается с вашего диска на страницу, разбирается там с помощью PDF.js, скомпилированного для Интернета, собран в .docx в памяти и передан в качестве загрузки. Ни один запрос не содержит документ, на сервере ничего не сохраняется, и никто не существует для удаления позже.
Обычная альтернатива — это сайт, который берет ваш PDF-файл, преобразует его на компьютере, о котором вы ничего не знаете, и отправляет вам ссылку по электронной почте. Для публичной листовки это нормально. Для трудового договора это решение, которое вас не просили сознательно принимать.
Стоимость памяти вкладок на очень больших файлах и без OCR на стороне отсканированных страниц. Оба являются видимыми пределами, а не тихими, в которых торговля стоит.



