PDF Copy Text Issue: Странные персонажи - PullRequest
2 голосов
/ 02 апреля 2019

Я пытался скопировать текст из файла PDF, но получил странные символы.Как ни странно, Okular может перекодировать текст, но не с Sumatra PDF или Adobe, все три приложения установлены в Windows 10 64 бит.Чтобы лучше объяснить мою проблему, вот видео https://streamable.com/sw1hc. "Файл обходного пути текстового слоя" - одно решение, которое я получил.Любая помощь очень ценится.Привет

1 Ответ

4 голосов
/ 03 апреля 2019

Вкратце: (оригинальный) PDF не содержит информации, необходимой для обычного извлечения текста, как описано в спецификации PDF. В зависимости от точного характера вашей задачи, вы можете попытаться добавить необходимую информацию к существующим текстовым объектам и шрифтам или использовать OCR.

Отображение кодов символов в Unicode, как описано в спецификации PDF

Спецификация PDF ISO 32000-1 (и аналогично ISO 32000-2, тоже) описывает алгоритм преобразования кодов символов в значения Unicode, используя информацию, доступную непосредственно внутри PDF.

Он часто цитируется в других ответах о переполнении стека (см. здесь , здесь , здесь , здесь , здесь , или здесь ), поэтому я не буду приводить это здесь снова.

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

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

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

Что произойдет, если приведенный выше алгоритм не сможет получить значение Unicode

В этом случае реализации извлечения текста отличаются, они пытаются определить соответствующее значение Unicode, используя эвристику или информацию из PDF-файла или применяя OCR к рассматриваемому глифу.

То, что разные программы, которые вы пробовали, выдает такие разные результаты, показывает, что

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

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

Что делать в таком случае

Существует несколько вариантов, более или менее осуществимых в зависимости от конкретного случая:

  1. Запросите у источника PDF версию, содержащую правильную информацию для извлечения текста.

    Если у вас нет контракта с этим источником, который требует от них предоставления PDF-файлов в машиночитаемой форме, или если источник обязан иным образом делать это, они обычно будут отклоняться, хотя ...

  2. Применить OCR к рассматриваемому PDF.

    В зависимости от качества программного обеспечения OCR и глифов в PDF результаты могут быть сомнительного качества; например в заголовке «Глава 1: Производные ценные бумаги» в вашей «PDF copy text release-Text layer workaround.pdf» была определена как «Глава1: Deratve Securites» ...

  3. Вы можете попробовать интерактивно добавить созданные вручную ToUnicode карты в PDF, например, как описано Тильманом Хаушерром в его ответе на "как добавить юникод в truetype0font на pdfbox 2.0.0" .

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

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