Chou(瞅)-PDF论文重命名工具升级了!这次专门优化了中文论文支持
最近收到不少反馈,说处理中文PDF论文时总是遇到各种问题,有的提取出来是乱码,有的作者名字识别不准,还有的年份根本提取不到。
所以尽量将这些问题都修了一遍。今天就跟大家聊聊这次升级都做了啥。
先说说问题出在哪
用过Chou的同学都知道,它能自动从PDF里提取标题、作者、年份,然后把论文重命名成标准的引用格式。比如把一篇论文从原始文件名改成”作者等 (年份) – 论文标题.pdf”这样的格式。
但对中文论文就没那么友好了。我测试了一批中文PDF,发现了几个大问题。
第一个问题是字符编码错乱。很多中文PDF用原生方法提取出来的文本全是乱码,完全看不懂。这是因为PDF内部的字体映射表不对,提取出来的字符就乱套了。
第二个问题是扫描版PDF没文字。很多老论文是扫描版的,PDF里根本就没有文字层,只能看到图片。原来的工具提取出来是空的,啥也干不了。
第三个问题是中文学位论文格式特殊。中文的硕士、博士学位论文通常有标准的封面格式,比如”论文题目”、”作者姓名”、”指导教师”这些字段。但原来的工具不认识这些字段,提取出来的信息乱七八糟。
这次升级怎么解决的
乱码问题,智能检测加自动OCR
加了一套乱码检测系统。简单说就是,提取完文本后,我会检查有没有奇奇怪怪的控制字符,有没有大量的替换符号,中文汉字之间是不是混入了垃圾字符。
如果发现这些问题,就说明原生提取有问题。这时候我会自动调用OCR引擎重新提取。OCR就是把PDF当成图片,用AI识别上面的文字。虽然慢一点,但准确率高得多。
实际测试下来,60%的中文PDF都需要用OCR。比如有个例子,原生提取只有73个中文字符还带乱码,OCR提取后有88个中文字符而且完全正确。
扫描版PDF,强制OCR
对于扫描版PDF,检测到文本长度为0或特别少,直接强制使用OCR。测试了几个扫描版的老论文,都能成功提取出内容了。
中文学位论文,智能字段识别
现在能识别中文论文的标准字段了,包括标题相关、作者相关、导师相关等各种字段。识别到这些字段后,就能准确提取对应的内容,不会再把”指导教师”后面的名字当成标题了。
中文姓名,2到4个字的都能识别
中文姓名通常是2到4个汉字。之前有时候会把”概率论与数理统计”这种当成作者名,现在加了过滤逻辑,能区分真正的姓名和学科名称了。
实际效果怎么样
我用了真实的中文PDF论文做了测试,结果还挺满意的。
有个案例是正常PDF但编码有问题,检测到25%的字符是乱码,自动触发OCR后成功提取了标题、作者、年份,生成了正确的新文件名。
另一个案例是扫描版PDF,文本长度为0,强制OCR后成功提取出近百个字符,正确识别了标题、作者、年份。
还有个中文学位论文的案例,检测到学位论文标准格式后,从”作者姓名”字段提取作者,从”论文题目”字段提取标题,都很准确。
整体来看,测试的论文里97.6%的测试用例通过,60%的中文PDF自动触发了OCR,OCR提取的字符数平均提升30到50%。
怎么用
安装
首先安装Chou,直接用pip安装就行:
pip install chou
如果想获得最佳效果,建议再安装一个OCR引擎。推荐用Surya,准确度最高:
pip install surya-ocr
或者用PaddleOCR,对中文特别友好:
pip install paddleocr paddlepaddle
不想装OCR也能用,但遇到乱码或扫描版PDF就没办法了。
更新
如果你之前已经安装过Chou,想更新到最新版本,用这个命令:
pip install --upgrade chou
如果之前装过OCR引擎,更新完Chou后OCR功能会自动可用,不用重新装。
预览
先用dry-run模式看看效果,不会真的改文件:
chou --dir /你的论文目录 --dry-run
比如你的论文在/home/user/papers这个文件夹,就这么写:
chou --dir /home/user/papers --dry-run
在Windows上,路径可能长这样:
chou --dir C:\Users\YourName\Documents\papers --dry-run
运行后会显示类似这样的输出,告诉你每个文件提取的标题、作者、年份,以及生成的新文件名。
日志
如果想看OCR触发了没有,加个-v参数看详细日志:
chou --dir /你的论文目录 --dry-run -v
你会看到OCR触发的原因和提取效果的对比信息,比如某篇论文检测到多少比例的乱码,OCR提取了多少字符,对比原生提取提升了多少。
执行
觉得预览效果不错,就把–dry-run改成–execute真正执行重命名:
chou --dir /你的论文目录 --execute
注意,这个操作会真的改文件名,建议先备份或者先在测试文件夹里试一下。
其他参数
想处理子文件夹里的PDF,可以加–recursive参数(默认就是递归的):
chou --dir /你的论文目录 --execute --recursive
只想处理当前文件夹,不加子文件夹:
chou --dir /你的论文目录 --execute --no-recursive
想改变作者格式,比如显示所有作者而不是只显示第一作者:
chou --dir /你的论文目录 --dry-run --format all_surnames
可选的格式有下面这几种:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
如果用n_surnames或n_full格式,可以用–num-authors参数指定显示几位作者:
chou --dir /你的论文目录 --dry-run --format n_surnames --num-authors 2
想导出处理结果到CSV文件:
chou --dir /你的论文目录 --dry-run --output results.csv
还有哪些不足
虽然改进了不少,但还有些地方需要优化。
OCR后的文本解析方面,有些论文OCR提取出来的文本,标题和作者分不太清楚,可能识别不够准确。
非标准格式的论文,比如特殊排版的中文学位论文,可能识别不准。
中英文混合的论文,作者名字有时候会搞混。
处理速度方面,OCR比较慢,一篇论文可能要几秒钟。
这些问题我会继续优化,也欢迎大家提Issue反馈。

总结
这次升级主要解决了三个痛点。
乱码PDF自动检测并用OCR重新提取。
扫描版PDF能用OCR识别文字了。
中文学位论文能正确识别标准字段。
现在处理中文论文应该顺畅多了。如果还有问题,欢迎在GitHub提Issue,或者加群讨论。
最后,如果觉得这个工具有用,欢迎Star支持一下。项目地址是 https://github.com/cycleuser/Chou
祝大家论文管理愉快!
夜雨聆风