Начиная с Acrobat 9, инженеры Adobe добавили новую разновидность OCR под названием ClearScan.
Преимущества ClearScan по сравнению с распознаванием изображений с возможностью поиска заключаются как в размере, так и в четкости. Самая большая инновация Clearscan заключается в том, что:
ClearScan не заменяет шрифт вашими системными шрифтами. Скорее, пользовательский шрифт создается для соответствия внешнему виду пикселей. 1
Существуют ли другие продукты, кроме продуктов Adobe, которые поддерживают Clearscan или аналогичные продукты, в которых используется пользовательский шрифт, созданный для соответствия внешнему виду пикселей?
Smoothscan — это инструмент для преобразования отсканированного текста в векторизованную форму вывода. Поскольку печатный текст состоит из шрифтов, каждая конкретная буква (например, «о») будет иметь ту же форму, что и любая другая буква «о» в документе. Мы можем воспользоваться этим, построив таблицу таких символов и представив каждое вхождение символа со ссылкой на запись в таблице этого символа. Это сэкономит много места, и аналогичная идея используется в режиме jb2 djvu и JBIG2 для PDF.
Smoothscan строит эту таблицу, но вместо того, чтобы заполнять таблицу исходными растровыми изображениями, он векторизует каждый символ. Векторные изображения будут выглядеть более гладкими, чем их растровые эквиваленты, и их можно масштабировать без добавления пикселизации. Эти свойства приводят к меньшему размеру выходного файла, а также делают отсканированные текстовые изображения более читабельными.
Smoothscan сохраняет векторизованные изображения в пользовательский шрифт TrueType и встраивает шрифт в выходной файл PDF. В настоящее время каждый символ сопоставляется с произвольной буквой в шрифте, но в будущих версиях вы можете запускать OCR для каждого символа и гарантировать, что изображение «o» связано с кодировкой символа «o» в сгенерированном шрифте.
Поиск на pkgs.org не дает ни одного пакета smoothscan для любого дистрибутива Linux . Поэтому его нужно скомпилировать из исходного кода, в README отмечены следующие зависимости:
На коробке Ubuntu большинство из них можно получить так:
apt install libleptonica-dev libhpdf-dev potrace python-fontforge
Тест с образцом изображения. Загрузите README в abiword
, распечатайте его в файл .ps , а затем...
smoothscan
принимает)smoothscan
сравните различные размеры файлов с wc -c
:
gs -sDEVICE=tiffg4 -o README.tif README.ps
convert -monochrome README.tif README.mono.tif
smoothscan -o README.pdf README.mono.tif
wc -c README README.ps README.*tif README.pdf | head -n -1
Выход:
2432 README
83516 README.ps
33707 README.tif
33618 README.mono.tif
20394 README.pdf
Первый абзац результирующего README.pdf , показывающий векторизованные шрифты:
Формат файла djvu включает опцию JB2 , которая во многом аналогична ClearScan .
Используя приведенный выше ввод README.psany2djvu
, утилита возвращает отличные результаты:
any2djvu README.ps
... результирующий README.djvu имеет размер всего 7 КБ (1/3 размера smoothscan
вывода) и выглядит четче:
Этой резкости, вероятно, помогает отсутствие монохромного .tiff в качестве входных данных. Этот тест - несправедливое сравнение. Давайте попробуем это с моно растеризованным .tiff :
# "-f 6" sets input format to "Scanned Document - B&W - >400 dpi"
any2djvu -f 6 README.mono.tif
Теперь результат меньше 6k, но выглядит немного неровнее:
В отличие от smoothscan
выходного файла .pdf , выходной файл .djvu позволяет выбирать текст даже при растровом вводе.
Одна плохая вещь, однако, any2djvu
нуждается в онлайн-сервере для преобразования работы — это не подходящий инструмент для конфиденциальных документов.
НОВЫЙ ОТВЕТ
Мой PDFsak теперь может имитировать Adobe Clearscan (используя potrace).
СТАРЫЙ ОТВЕТ
Наличие ImageMagick , potrace и pdftools (отказ от ответственности: я автор pdftools). Предполагая, что у вас есть входной файл PDF с именем input.pdf
:
mkdir bmp
magick convert -density 300 input.pdf -quality 100 ./bmp/input.bmp
mkdir bmpproc
for /r %%i in (./bmp/*.bmp) do mkbitmap ./bmp/%%~ni.bmp --output ./bmpproc/%%~ni.pbm
mkdir pdf
for /r %%i in (./bmpproc/*.pbm) do potrace ./bmpproc/%%~ni.pbm -b pdf --output ./pdf/%%~ni.pdf
pdftools --input-dir .\pdf --output merged.pdf --fitpaper
РЕДАКТИРОВАТЬ: Вы можете получить версию вашего PDF-файла в векторном виде и с помощью OCR. Таким образом, единственная разница с Adobe ClearScan заключается в том, что шрифты не встроены (но текст тем не менее сохраняется как объект «Путь»).
magick convert -monochrome -density 300 -alpha off input.pdf ./bmp/input.bmp
for /r %%i in (./bmp/*.bmp) do mkbitmap ./bmp/%%~ni.bmp --output ./bmpproc/%%~ni.pbm
for /r %%i in (./bmpproc/*.pbm) do potrace ./bmpproc/%%~ni.pbm -b pdf --output ./vectorized/%%~ni.pdf
for /r %%i in (./bmpproc/*.pbm) do tesseract ./bmpproc/%%~ni.pbm ./ocred/%%~ni pdf
python -m pdftools --input-dir ocred --overwrite --fitpaper --output ocred.pdf --natural-sort
python -m pdftools --input-dir vectorized --overwrite --fitpaper --output vectorized.pdf --natural-sort
qpdf --qdf --object-streams=disable ocr.pdf ocr-uncompressed.pdf
with open("ocr-uncompressed.pdf", "rb") as fileh:
filedata = fileh.read()
streams = filedata.split("endstream".encode("utf8"))
outdata = bytearray()
for rawstream in streams[:-1]:
before, stream = rawstream.split("stream".encode("utf8"))
outdata += before + "stream".encode("utf8")
if not stream.startswith(bytearray.fromhex("0aff")):
outdata += stream
outdata += "endstream".encode("utf8")
outdata += streams[-1]
with open("ocr-no-img.pdf", "wb") as fileh:
fileh.write(outdata)
pdftk vectorized.pdf multibackground ocr-no-image.pdf output mergedlayer.pdf
и готово!
Эдуард Флоринеску
Андреа Лаззаротто
agc
робертпьер
agc
djvu
запись более запутанной...сджй
cjb2
команды (apt install djvulibre-bin
? И я прав, думая, что параметр DjVu означает, что ваши документы не в формате PDF и, следовательно, изначально не читаются на большинстве платформ? И векторный шрифт не создается, как в ClearScan или smoothscan, это просто сжатое растровое изображение?сджй
any2djvu
не работает в автономном режиме: «Хотя вполне возможно, что адекватные замены с открытым исходным кодом для [высокопроизводительных кодировщиков DjVu LizardTech] в конечном итоге станут доступны, [они] не включены в DjVuLibre. Это означает, что, на данный момент некоторые типы документов, сжатые с помощью коммерческих компрессоров LizardTech или с помощью онлайн-сервисов преобразования (таких как Any2DjVu), будут иметь меньший размер (и в некоторых случаях более высокое качество), чем документы, сжатые с помощью кодировщиков DjVuLibre».