贡士
- UID
- 155378
- 积分
- 2986
- 回帖
- 1016
- 主题
- 67
- 铜币
- 44807
- 威望
- 2439
- 银币
- 0
- 贡献
- 0
- 发书数
- 57
- 注册时间
- 2023-6-14
- 最后登录
- 2024-5-6
- 在线时间
- 1540 小时
|
本帖最后由 edennow 于 2023-12-17 00:06 编辑
相信不少人在阅读网文之类的文本质量不算高(也许是因为文本“来路不正”,也许是因为作者的“丈育”值比较高)的书籍时,会碰到很想把书中的某些错别字给顺手改掉的情况。
但是,由于目前的阅读软件大部分都不支持就地编辑文件(特别是 epub mobi azw3 等格式的书籍),而自己又不想或不方便马上跑到电脑上,或者别的编辑软件里对书籍进行修改,
可能就会选择通过阅读软件自带的“标记/高亮/批注/笔记”(在我看来是同一回事)功能,将想改的内容进行标记,等到了方便的时候再去统一修改(这也许算读校吧)。
这时如果书籍中的校对批注很多,达到成百上千处的话,大概对着笔记都要翻半天,改起来的效率不会很高,过程也非常枯燥乏味。
因此个人分享下通过之前写的脚本:网文常见字词校对替换表(在帖子中搜索 FixText.zip 下载附件,最好提前了解一下大概是怎么用的),
将阅读软件中的批注自动转换成临时校对表,再通过该脚本中的校正功能进行一键替换的思路和流程。
最近重新翻了下赤霓大佬写的《ePub 指南——从入门到放弃》,原来里面也有写通过多看批注来读校的内容,和本帖的思路基本一致,之前没细看,都忽略了哈哈。
补充:
试用过的几款软件中,貌似只有“开源阅读 Legado” 支持随时编辑文本内容,但是编辑的时候是弹出一个内容框,里面是整个当前章节的所有文本,要想从中查找并修改内容稍微有点麻烦,这个“编辑”和“阅读”的体验略显割裂,而且貌似每次修改只能局限在当前章节,不能全局替换。
此外,如果你阅读的是精排过的 epub 书籍,通过阅读 app 的这种方式来修改内容会破坏原有排版,被替换成阅读自己生成的样式。
编辑完成后,可以直接导出修改后的结果,不需要参考本帖写的通过批注来一键替换的操作,如果是开源阅读的用户(且不看精排版的 epub)基本可以不用看本帖内容。
1.如何进行校对批注
(1)需要保证同一处批注中包含“改前”和“改后”的对应内容:
比如在阅读软件中的划线句子为“原上韩山石径斜”,那就需要在这个划线上进行批注,
最好是通过“复制文本”(基本每个阅读软件都有的功能)的方式,将“原上韩山石径斜”复制为笔记/批注内容,
然后在批注的输入框里自己把这一句改成正确的“远上寒山石径斜”。
这时,这一处批注应该会变成:
划线内容:“原上韩山石径斜”
批注内容:“远上寒山石径斜”
这样就可以预见,在进行文本替换的时候,只要搜索“原上韩山石径斜”,替换为“远上寒山石径斜”,就完成了这一处的修改校正了。
只要你能按照这个模式进行批注(每次都要复制粘贴原文是挺麻烦的),那后续的脚本操作就支持把任意数量的批注,自动转换为校正表,实现一键通过校正脚本进行校对替换,就不用再到各种编辑器中一个个改了。
(2)支持的软件及相应的笔记格式示例:
多看:
1
2000-01-01
原上韩山石径斜
注: 远上寒山石径斜
calibre(pc 端):
原上韩山石径斜
2000-01-01 00:00
远上寒山石径斜
───
文石 neoreader:
第1章 我是第一章
2000-01-01 00:00 | 页码:111
原上韩山石径斜
【批注】远上寒山石径斜
掌阅:
2000-01-01
原文:原上韩山石径斜
想法:远上寒山石径斜
微信读书(微信读书的笔记内容在第一行,和别的软件是反着来的):
1
2000-01-01
远上寒山石径斜
>> 原上韩山石径斜
阅读 Legado(json 格式):
[
{
"bookAuthor": "作者",
"bookName": "书名",
"bookText": "原上韩山石径斜",
"chapterIndex": 1111111,
"chapterName": "章节",
"chapterPos": 1111111,
"content": "远上寒山石径斜",
"time": 2000-01-01
}
]
静读天下:
书名 (高亮: 0; 标注: 1)
───────────────
◆ 第一章
▪ 原上韩山石径斜 (远上寒山石径斜)
目前支持上述几种软件的批注格式,只要是用这几种软件做的划线批注,都应该会自动生成相应格式的笔记文本。
不管是来自 pc、手机、平板、墨水屏阅读器,都能进行转换和替换。
如果是 epub 或者 txt 书籍,可以直接支持替换,不需要转格式;
其他格式的书则需要自行转成 epub 或 txt 来进行替换(阅读和批注的过程中不用转,只在统一替换的时候进行转换即可)。
(3)注意事项和使用局限:
- 做批注的过程中,要尽可能地让划线内容有辨识度(稍微长一点最好,如果能带上句子前后的句号逗号等,更是好中好,不要只是一两个字或几个词)。
- 批注内容的开头部分不能是上面示例中的所有批注标记(不能以“注:”、“想法:”、“【批注】”、“>> ”、“————”、“content:”的字样作为开头),否则大概率会转换错乱。
- 所有的批注/高亮/划线的地方最好有对应的笔记内容,目前应该可以支持含有单纯划线/高亮内容的转换,但为免混淆,最好还是“划线”和“笔记”按上述的格式“一对一”地进行对应。
- 批注不支持换段,不支持换段,不支持换段,每一处批注都必须限制在同一段落内,目前各种软件五花八门的批注格式很多,想要识别换段的内容比较麻烦,如果一处批注换了段,会导致全体批注无法转换。
若是通过上述方式做了批注,就最好不要和你自己原来做的其他批注(比如很多换了段的高亮划线)混在一起导出来,否则也有可能转换出错。
2.如何将批注转成替换表并一键替换
(1)从软件中导出批注并转换成临时替换表:
上面列出的几种软件都支持批注导出,把导出来的批注文件(一般都是 txt 吧,其他格式也都支持),放置到脚本的 logs 文件夹中(将 FixText.zip 附件解压后可见);
然后执行【双击运行】9.从批注中生成校对表.bat;
脚本执行完成后,会在 src/maps 文件夹中生成对应的结果文件:5.临时校对表.php
在执行替换前,最好先打开 5.临时校对表.php 检查下里面的替换词条是否有缺漏和错误,避免执行出错。
文件示例内容如下:
临时替换表:
$tempMap = [
['before' => "原上韩山石径斜", 'after' => "远上寒山石径斜"],
['before' => "第额处修改", 'after' => "第二处修改"],
];
额外信息:
[
{
"before": "三英战吕部",
"after": "!这本书里所有的“吕布”都错写成了“吕部”,后续统一修改。"
}
]
其中,“$tempMap”的内容就是后续脚本中用来进行一对一替换的临时替换表,里面可以有非常多的批注词条。
再另外说明一下【额外信息】的含义:
在做批注的过程中,除了可以有“划线”“批注”一对一的内容之外,也可以在批注的开头第一个字符位置输入中文感叹号【!】,用来记录一些额外的校对提醒信息。
脚本转换批注的过程中,只要碰到开头是!的批注内容,就不会让这一处批注进入临时替换表,而是单独放到【额外信息】里显示出来,供校对使用。
(2)利用临时替换表对书籍进行一键校正:
①将需要校对的书籍放置到 books 文件夹;
执行【双击运行】10.通过批注校对表进行替换.bat;
即可利用上面的临时替换表,完成文本校正(支持 txt 和 epub 格式的书籍)。
然后也可以通过 beyond compare 比较 books 和 booksBak 中的文件,进行替换结果的确认,只要你的批注内容辨识度比较高,是基本不可能出现误伤的。
②完成校正后,执行【双击运行】7.书籍清理(全部删除,包括备份).bat;
会自动将所有批注文件、临时校对表、原书籍文件删除,清理数据。
如果能理解并按照上面的流程进行“批注+一键替换”,同一本书可以在支持的任意软件中阅读任意的篇章并进行批注:
比如,前半本书是在微信读书里读的,做了 40 条批注;
后半本是在 pc 端的 calibre 读的,做了 50 条批注。
那等到要进行统一替换的时候,只要分别在这两个软件导出两个批注文件,统一放到 logs 文件夹中,然后执行批注转换,
会把这 40+50 条批注统一合并成一个替换表,后续也是一键进行替换即可。
PS:这个“将批注转换为替换表,并一键替换”的逻辑其实很简单,代码也是随便写一下就能实现。
当然,要使用一个工具的时候,肯定是希望这个工具能低成本地提升一些操作效率。
如果你觉得上面提到的思路和流程的理解成本比较高,或者不认同这样的操作流程(特别是要复制粘贴原文进行批注,我也觉得很无语),
也感受不到这样的批量替换能带来的效率提升,当然可以继续按照自己的方式去做校对批注^_^(因为这个思路我也是突发奇想瞎鼓捣的,仅供参考仅供参考,若有更好的想法也欢迎交流)。
最简单的做法当然是完全不去改错别字,毕竟脑补也能解决问题,网文本身也不存在什么实在价值。
|
评分
-
查看全部评分
|