最近看一些扫描的考研电子书,经常需要翻看不同的章节,但是很多电子书没有目录,看的非常难受。所以就从网上找了一些生成电子书目录的方法。
一、使用的软件和方法
方法是对图书的目录页先进行ocr识别(具体可以用wps,或者adobe的软件等等),然后放到pdgcnteditor这个软件中,使用一些方法把它转换成相应的格式。熟练正则查找和替换的操作起来就非常方便了。对应的格式也很直观,首先是删除全部的tab符号,然后第一级目录顶格,而后每一级目录都在前面添加一个tab符,最后页码的数字前面加一个tab符即可。
最终效果
二、使用演示
1.这是第一种书,目录页的排版是竖向一栏
(1)先把目录的文字搞出来。
这是wps ocr的结果
上面是粘贴到vscode后的结果,可以看到,使用ocr识别,可以把页面中的所有文字都识别出来,但是排列顺序会出现问题,而且有些没有必要识别的文字也会添加进去。但是复制的时候,又不方便一个一个选取需要的文字,这样又会让操作变得麻烦。所以使用ocr直接识别的结果就能使用的情况是很少的。
这是用pandaocr识别的结果,可以看见识别结果还是很不错的。
这是abbyy的识别结果。
这是wps的编辑图片,然后识别本页的结果。这次的效果还行。在上面的这个图里,要想选中所有目录文字,可以先把最大的那个红框选中删除,然后拖动选择目标的文字框即可。
(2)
上一步其实就是用各种方法把目录的图片识别成文字,而且只要目录信息和页数是对的就可以了。如果能从出版社,电商平台,图书馆联盟等等其他地方直接找到图书的目录信息,那更方便,需要修改的地方更少。
接下来的这一步就是使用正则把这些目录信息修改成对应的格式。
首先是正则表达式的语法规则,还有正则替换和对应的规则。
可以看一下我写的这篇文章,正则表达式规则——写正则式_正则式和正则表达式_zsq_csh1的博客-CSDN博客一、读:1.字符分类:(1)特殊字符:即单个出现时,先遵循特殊含义特殊字符说明$匹配一行的结尾。要匹配 $ 字符本身,请使用\$^匹配一行的开头。要匹配 ^ 字符本身,请使用\^()标记子表达式的开始和结束位置。要匹配这些字符,请使用\(和\)[]用于确定中括号表达式的开始和结束位置https://blog.csdn.net/zsq_csh1/article/details/120449745?spm=1001.2014.3001.5501也可以看pdgcnteditor软件附带的使用说明,里面更详细地介绍了正则表达式的语法。
下面是一些常见的应用。注意,正则表达式会让所有符合规则的地方都被处理,而有些实际上并不是希望处理的,所以还需要手动调整。
1)去掉所有的换行符,左右括号,还有tab符,
2)在所有的页码后面添加换行符
解释:下面的替换一栏里,$&表示上面匹配到的每一个匹配项的原字符串
&1,&2,......,&9,表示上面的模式串匹配到的每一个字符串中第i个被括号括起来的部分匹配到的部分
3)把长串的……还有中间的杂字符全部替换成一个tab符号,这个长串的……可能是中文的省略号(shift+6),也可能是中文的·号(tab上面的),也可能是英文的.号
4)在第一章,第一节,第一部分,等等类似结构之前/之后添加空格/tab控制缩进
(3)在pdgcnteditor中给pdf添加目录
打开pdgcnteditor
拖入pdf文件,粘贴已格式化过的目录文字,格式要求就三点,目录分级用tab分开,页码之前用tab分开,然后其余地方没有多于的tab符号
选中全文,点这个正负号增减页码对应的页数
最后ctrl+s保存,打开pdf检查。
然后再用wps简单修改一下目录中有错误的部分,ctrl+s保存即可。