ScanTailor版本简介

作者:马健
邮箱:stronghorse_mj@hotmail.com
主页:https://www.cnblogs.com/stronghorse/

在我发了《从几个常见需求看扫描电子书处理软件选择 》后, 还真有小伙伴去找ScanTailor准备用了,结果很快就被搜索到的各种版本整得满脸懵,又问到我这里。所以下面就尝试梳理一下它的版本情况,作为上面这篇文章的补充。

一、ScanTailor(ST)

ST的原作者是Tulon,正式的官网地址是:http://scantailor.org/
ST是开源项目,在github上的网址是:https://github.com/scantailor/scantailor
官网上提供0.9.11.1版下载,但在github上最后一个版本是0.9.12.2版。我用源代码比较工具比较过,如果不用命令行,这两个版本没有实质性的差异,所以你能搞到哪个版本就用哪个版本吧,不必太纠结。

Tulon不仅把ST开源,而且详细说明了如何搭建ST的编译环境。依我看任何一个合格的VC程序员照他的说明都能搭建并成功编译ST,再加上ST在扫描电子书处理领域确实比较流行,不少人用了都能产生点啥想法,所以引来了一波又一波的魔改潮,有名有姓的就包括:
Scan Tailor Plus:http://sourceforge.net/projects/scantailor/files/scantailor-devel/plus/
Scan Tailor Enhanced:http://sourceforge.net/projects/scantailor/files/scantailor-devel/enhanced/
Scan Tailor Featured:http://sourceforge.net/projects/scantailor/files/scantailor-devel/featured/
还有在Scan Tailor Featured和Scan Tailor Enhanced基础上再度魔改的Scan Tailor Advanced:
https://forum.diybookscanner.org/viewtopic.php?f=21&t=3455
https://github.com/4lex4/scantailor-advanced/releases

diybookscanner论坛上有ST专栏:https://forum.diybookscanner.org/viewforum.php?f=8
这里面除了各种魔改版去冒头、打卡外,还有不少使用问答和经验,有兴趣的可以去看看。

老实说,这些魔改版本依我看基本上对普通人没个卵用:

scantailor enhanced:可以通过Tools->Fix DPI重新设置单张或全部图像的DPI,允许在output界面中选择tiff压缩算法。
scantailor featured(STF):主要针对mixed模式,可以选择插图形状。对于曲面展平功能,STF看到了原版ST存在左右边界可能判断不准确,造成左右边界倾角过大的问题,但所做的修改完全不是地方 ,自然也没啥用。
scantailor advanced(STA):Select Content多了一个Page Box,Output多了一堆选项,界面做得更花哨,但crash的风险似乎也增加了。

二、ScanTailor-Experimental(STE)

作为一个资深程序员,我非常理解自己的作品被人改得面目全非的苦恼,所以很能明白Tulon为什么彻底放弃继续升级ST,改为重新发布新的STE。

Tulon在diybookscanner上的说明:https://forum.diybookscanner.org/viewtopic.php?f=21&t=3195
STE新的发布页面:https://github.com/Tulon/scantailor/releases

与ST相比,STE在界面上主要有两处变化,其实内部很多重写:

1、打开文件夹时,不再需要选择DPI,内部处理也不再依赖于源图像的DPI。这是STE与ST、ST的各种魔改版最直观的区别。

这样的修改,无疑更有利于现在越来越多人用手机或相机拍书的情况:以前都用平板扫描仪,当然知道扫描的时候是多少DPI,现在用手机或相机的时候谁说得清?凑近一点是300 DPI的效果,离远一点就成了150 DPI的效果,再纠结照片的DPI有个毛用?

STE对此的内部实现其实很简单粗暴:ST大多数功能考虑到执行效率,都需要先对图像进行缩图,然后针对缩小后的图像进行处理,如纠斜就是先在缩小后的图像上找到倾斜角度,然后再对原图按照这个角度旋转。ST缩图的时候,是把原图缩小到指定的DPI,比如说100 DPI,那么如果原图是300 DPI就相当于长、宽缩小到原图的1/3,如果原图是200 DPI就相当于缩到1/2。而STE不再有DPI的概念,直接指定把原图缩小到某个固定的值。这样做我觉得有好处也有坏处:

  • 从逻辑上说这样改更顺,因为ST中有大量的经验参数值,在原图DPI不准确的情况下针对固定DPI不如针对固定尺寸。
  • 遗憾的是STE做得有点毛糙,没有针对新设置的固定尺寸对原来的经验参数值逐一进行校验、优化,所以某些功能或者说某些图片感觉处理得比ST好,某些则完全反过来。

2、把原来的Deskew(纠斜)改成Geometric Distortions(几何矫正),把Dewarping(曲面展平)功能从Output移过来,并新增加了Keystoning(梯形矫正)功能。

事实上,在STE内部把曲面展平功能的文本行追踪、模型建立等等都全部重写,只保留了ST的页边界追踪。这个修改我觉得也是好坏掺半:

  • 从逻辑上说更顺。ST为了省事,把曲面展平放到最后,即在做曲面展平之前图像已经纠斜、裁边、照度均衡,与页面内容无关的干扰部分都已经被去掉,只要专心找特征、建模就好。但从逻辑上说,把展平放在裁边之后是不对的,因为在没有展平的情况下,其实裁边结果不一定会准确。所以STE把展平调整到裁边之前,逻辑上更合理。
  • ST和STE在曲面展平的理论基础上是一致的,都需要提取横向曲线特征、纵向边界特征。打开ST的Debug开关后,从界面上显示的中间结果可以清楚看到,在提取纵向边界特征时,ST是通过构建页面内容部分的外包络线,然后提取最长的包络线作为边界。这样如果页面上半部分或者下半部分存在插图,就可能造成包络线向内倾斜,造成边界提取错误。而STE改成先对文本行进行跟踪,然后根据所跟踪出来的文本行的左右端点构建左右边界,鲁棒性更好一点。
  • 在用样条曲线拟合文本行的时候,ST除左右端点外并不要求点点通过,但STE要求所有点都是点点通过,因此STE展平后的结果有时候看起来七上八下,文本行成了波浪。

总之,我觉得STE的设计思想比ST更好,但在实现时做得有点毛糙(我甚至看到有STE一处源代码里把三角函数的定义搞颠倒了),影响了最终效果。如果能够仔细打磨一下,会更上层楼。但似乎Tulon已经明确表示不想再干了,而其他人是否能接手STE我表示很怀疑:ST源代码是传统C++风格,所以大家看起来都不会觉得很吃力,但STE的源代码完全变成了最新C11/C14风格,我第一次见到的时候差点以为我学了多年的C++全是假的!这可能也是ST魔改版一大堆,STE魔改版一个没有的原因之一。

三、建议

有朋友非要我推荐一个ST版本,我的建议是:以x64版STE为基本版吧,优先用它处理,对处理效果不满意再换其他版本试试,候补优先级从高到低依次是ST、STA、STF。反正ST系列,包括所有魔改版的绿化都很容易:找个虚拟机一装,把安装文件夹复制出来就可以到处跑了。

但真正好朋友的良心建议是:放弃ST,改用CEP吧!二者在功能,尤其是性能方面的差距越拉越大,用惯了CEP之后再让我去用ST,真心用不下去。ST与CEP的差异参见这里:

ScanTailor与ComicEnhancerPro的区别 - strnghrs - 博客园 (cnblogs.com)

(完)

posted @ 2020-10-14 18:05  strnghrs  阅读(5799)  评论(1编辑  收藏  举报