ClearScan优于可搜索图像OCR的优势在于大小和清晰度。
Clearscan的最大创新之处在于:
ClearScan不会用您的系统字体替换该字体。而是创建了
自定义字体来匹配
像素的视觉外观。1
除了Adobe以外,还有其他产品支持Clearscan或类似产品使用创建的自定义字体以匹配像素的视觉外观?
#1 楼
Smoothscan是一种将扫描的文本转换为矢量化的
输出形式的工具。由于打印的文本是用字体组装而成的,因此文档中每个
特定字母(例如'o')的形状都与其他
'o'相同。我们可以通过建立此类符号的表来利用这一点,并使用对该符号表条目的引用来表示每次出现的符号。这将节省大量
空间,并且在djvu的jb2模式和用于
PDF的JBIG2中使用了类似的想法。
smoothscan可以建立该表,但不填充带有原始栅格图像的表格,它将每个符号矢量化。矢量图像
比其等效的光栅看起来更平滑,并且可以缩放而不会引入像素化。这些属性导致较小的输出文件大小,并使扫描的文本图像更具可读性。
smoothscan将矢量化的图像保存为自定义TrueType字体,并且
将字体嵌入到输出pdf文件中。目前,每个符号已
映射到字体中的任意字母,但是在以后的版本中,您可以在每个符号上运行OCR,并确保将'o'图像与
关联。 <'/>
使用生成的字体编码字符。因此,它需要从源代码进行编译,其自述文件记录了以下相关性:
> potrace
fontforge(使用python支持编译):
python
在Ubuntu盒子上,其中大多数可以这样:
apt install libleptonica-dev libhpdf-dev potrace python-fontforge
带有示例图片的测试。加载
abiword
中的自述文件,将其打印到.ps文件,然后... 使用ghostscript将.ps文件转换为.tif, >
将其转换为单色.tif,(唯一的输入
smoothscan
接受) br /> 输出:
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
结果README.pdf的第一段,显示矢量字体:
djvu文件格式
包含一个JB2
选项,该选项与ClearScan几乎相同。
使用上面的README.ps输入,
smoothscan
util返回以下结果:出色的结果: README.djvu只有7K,(是
wc -c
输出的大小的1/3),并且看起来更清晰:通过不使用单色.tiff
作为输入。该测试是不公平的比较。让我们用
单色栅格化的.tiff进行尝试:
2432 README
83516 README.ps
33707 README.tif
33618 README.mono.tif
20394 README.pdf
现在输出小于6k,但看起来有点锯齿:
与
any2djvu
的.pdf输出不同,.djvu输出即使在光栅化输入的情况下也可以选择文本。
smoothscan
需要在线服务器来进行转换工作-这不是用于机密文档的合适工具。
#2 楼
具有ImageMagick,potrace和pdftools(免责声明:我是pdftools的作者)。假设您有一个名为input.pdf
的输入PDF文件:使用ImageMagick转换BMP文件中的每个页面: br />(可选)预处理图像文件:
mkdir bmp
magick convert -density 300 input.pdf -quality 100 ./bmp/input.bmp
光栅化每个BMP图像并将输出保存为PDF:
mkdir bmpproc
for /r %%i in (./bmp/*.bmp) do mkbitmap ./bmp/%%~ni.bmp --output ./bmpproc/%%~ni.pbm
将输出的PDF文件合并在一起:
pdftools --input-dir .\pdf --output merged.pdf --fitpaper
编辑:您可以获取PDF的版本向量化和OCRed。因此,与Adobe ClearScan的唯一区别是未嵌入字体(但是文本仍保存为“ Path”对象。
使用ImageMagick,将pdf转换为bmp图像(一个每页)
magick convert -monochrome -density 300 -alpha off input.pdf ./bmp/input.bmp
使用Potrace,后处理bmp,保存为pbm文件,并生成pdf的矢量化版本
mkdir pdf
for /r %%i in (./bmpproc/*.pbm) do potrace ./bmpproc/%%~ni.pbm -b pdf --output ./pdf/%%~ni.pdf
使用TesserAct,对您的pdf文件进行OCR
for /r %%i in (./bmpproc/*.pbm) do tesseract ./bmpproc/%%~ni.pbm ./ocred/%%~ni pdf
使用pdftools,将页面合并在一起ocr-ed和矢量化版本的单个文件:
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
现在我们需要从ocr-ed文件中删除图像层( (因为我们将使用矢量化图像)。使用qPDF生成ocr-ed文件的未压缩版本:
qpdf --qdf --object-streams=disable ocr.pdf ocr-uncompressed.pdf
删除非图像使用以下python 3脚本从ocr-uncompressed.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
现在使用pdftk,覆盖ocr-ed版本(无图像)到矢量化版本:
pdftk vectorized.pdf multibackground ocr-no-image.pdf output mergedlayer.pdf
就可以了!
评论
感谢您的精彩文章,我认为没有其他选择,但似乎有一些不错的选择+ 1 /可以接受
–爱德华(Eduard Florinescu)
16年5月14日在11:44
很好的答案,但是...您是否说过将PS文件转换为DJVU? Postscript文件是否已经矢量化并带有可选文本?
– Andrea Lazzarotto
16年5月15日在0:08
无论.ps文件是矢量化还是栅格化,我都不知道,这是打印到任何字样的内容(因为.ps文件的大小为85K,甚至比.tif大,所以我想它已经栅格化了)。我对当前的PS> DJVU any2djvu测试感到不满意,但仍在寻找针对光栅化文本测试djvu的方法。
–agc
16年5月15日在17:59
是否仍然支持smoothscan? git的最新提交日期为5年前的2013年
–raffaem
18-10-12在12:59
事后看来,使用包含第一个程序名称的示例文本会使djvu条目更加令人困惑...
–agc
18-10-12在13:17