Если вы сканируете страницу с текстом в PDF и запускаете на ней приложение OCR, тогда текст будет добавлен на страницу, но "режим визуализации текста" будет установлен как невидимый. Он есть, но не отображается на экране (или на бумаге, если напечатан). То, что вы видите или распечатываете, является исходным отсканированным изображением.
Как мы можем сделать невидимый текст видимым?
Ну, мы можем редактировать PDF ... Код PDF для установки рендеринга текста на невидимый:
3 Tr
Вы не можете найти эту строку (пока) ни в оригинальном файле from_abbyy.pdf, ни в файле from_ghostscript.pdf, поскольку части PDF-файлов сжаты. Поэтому мы распаковываем их насколько это возможно с помощью qpdf
:
qpdf \
--qdf \
from_abbyy.pdf \
qdf--from_abbyy.pdf
qpdf \
--qdf \
after_ghostscript.pdf \
qdf--after_ghostscript.pdf
Теперь мы можем легко найти вышеуказанную строку (и в каждом файле есть только одно вхождение).
Давайте переключим это на один из видимых режимов рендеринга текста. В целом, мы можем выбрать один из этих 8 режимов рендеринга текста:
0 - fill glyph shapes
1 - stroke glyph shapes
2 - fill, then stroke glyph shapes
3 - neither fill nor stroke glyph shapes (invisible)
4 - fill and add to path for clipping glyph shapes
5 - stroke glyph shapes and add to path for clipping
6 - fill, then stroke glyph shapes and add path for clipping
7 - add glyph shapes to path for clipping
Если я использую режим "заливки", текст с OCR, вероятно, будет выглядеть не очень хорошо поверх основного сканированного изображения. Поэтому я предпочитаю вариант "инсульт". Поэтому я просто изменяю над строкой, чтобы читать
1 Tr
Глядя на этот измененный PDF, мне не нравится, потому что ширина линии по умолчанию слишком толстая, на мой вкус. Кроме того, цвет контура обводки черный (по умолчанию); Я бы предпочел красный, чтобы иметь контраст с первоначально отсканированными формами. Поэтому я добавляю некоторый код в начало этой строки, который устанавливает ширину линии равной четверти точки:
.25 w
и некоторые другие, чтобы установить красный цвет обводки:
1 0 0 RG
Полная строка теперь выглядит так:
.25 w 1 0 0 RG 1 Tr
Это все.
Обратите внимание, что наши небольшие манипуляции повредили файл, потому что его "TOC" (в техническом плане: его таблица xref
) теперь больше не будет действительным. Тем не менее, Acrobat Reader или Acrobat Professional по-прежнему открывают его (даже не жалуясь) и молча "восстанавливают" раздел xref файла. Другие программы просмотра PDF могут отклонить файл, но сейчас нам все равно ...
Вот скриншоты результата: (Первый снимок экрана увеличен до ширины окна.)
(Второй скриншот увеличен до 800%.)
Красные контуры - это отсканированный текст, видимый сейчас, как мы и хотели.
Я выполнил ту же процедуру, что и описанную выше для обоих файлов from_abbyy.pdf и after_ghostscript.pdf. Я открыл оба результата в 2 разных экземплярах Acrobat Reader. Если мы заставим их оба увеличить одно и то же значение и развернуть оба окна, то будет легко переключаться между двумя файлами с помощью [alt]+[tab]
. Это хороший способ выявить даже самые тонкие различия в рендеринге между двумя PDF-файлами.
Мой результат: нет даже одного пикселя, различного между входом Ghostscript (v9.02) и его выводом для этого файла. Но есть большая разница, если вы хотите скопировать и вставить текст ...