Если вы отсканируете страницу с текстом в 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) и его выводом для этого файла. Но есть большая разница, если вы хотите скопировать и вставить текст ...