阡陌居

 找回密码
 立即注册
搜索
热搜: 新人报到
查看: 1220|回复: 25

[软件] 【FixText】随时随地进行读校——将阅读软件的批注自动转换成校对替换表

[复制链接]

用户组:儒士

      UID
1796
      积分
405
      回帖
92
      主题
12
      发书数
6
      威望
347
      铜币
8948
      贡献
0
      阅读权限
30
      注册时间
2025-3-1
      在线时间
67 小时
      最后登录
2025-5-1
发表于 2025-3-12 20:27 | 显示全部楼层 |阅读模式
本帖最后由 edennow 于 2025-4-1 22:08 编辑

相信不少人在阅读网文之类的文本质量不算高(也许是因为文本“来路不正”,也许是因为作者的“丈育”值比较高)的书籍时,会碰到很想把书中的某些错别字给顺手改掉的情况。

但是,由于目前的阅读软件大部分都不支持就地编辑文件(特别是 epub mobi azw3 等格式的书籍),而自己又不想或不方便马上跑到电脑上,或者别的编辑软件里对书籍进行修改,
可能就会选择通过阅读软件自带的“标记/高亮/批注/笔记”(在我看来是同一回事)功能,将想改的内容进行标记,等到了方便的时候再去统一修改(这也许算读校吧)。

这时如果书籍中的校对批注很多,达到成百上千处的话,大概对着笔记都要翻半天,改起来的效率不会很高,过程也非常枯燥乏味。

因此个人分享下通过之前写的脚本:适用于网文校对的自动纠错校正脚本(在帖子中搜索 FixText.zip 下载附件,最好提前了解一下大概是怎么用的),
将阅读软件中的批注自动转换成临时校对表,再通过该脚本中的校正功能进行一键替换的思路和流程。

补充:
试用过的几款阅读软件中,有几款是可以直接编辑文本的(Readingo 和 QuickEdit 有 iOS 版本,其他好像都只有安卓平台的),如果可以接受的话建议直接用这些软件操作,会轻松不少:

1. 阅读 Legado。这个不用多介绍了,可以导入书源,支持直接修改 txt 和 epub 文本。但是编辑的时候是弹出一个内容框,里面是整个当前章节的所有文本,要想从中查找并修改内容稍微有点麻烦,这个“编辑”和“阅读”的体验略显割裂,而且貌似每次修改只能局限在当前章节,不能全局替换。

此外,如果你阅读的是精排过的 epub 书籍,通过阅读 App 的这种方式来修改内容会破坏原有排版,被替换成阅读自己生成的样式。

编辑完成后,可以直接导出修改后的结果,不需要参考本帖写的通过批注来一键替换的操作。

2. Readingo。据说是原来 Anyview 作者的新作,目前仅支持修改 txt 文件。编辑的时候也是单独进入一个编辑的界面,和阅读界面是分开的,也有点割裂。不过比较好的是可以通过目录进行章节跳转,也可以支持正则替换(功能测试中)和全局替换。

修改完书籍之后,可以将文件导出(长按书籍封面->点击“选择”->点击“压缩”->分享文件):


3. QuickEdit 高级版。这个可以自己去搜索一下,严格来说不是阅读软件,是比较纯粹的移动端文本编辑器,支持编辑 txt,支持正则替换和全局替换。

4. MT 管理器。是很出名的文件管理软件,里面自带文本编辑器,也支持正则替换和全局替换,还可以自定义快捷输入片段,使用起来还是很方便的。



当然,如果你想在多看、微信读书或者掌阅、静读天下之类的常见阅读 App 中直接对精排的 epub 书籍进行读校纠错,不妨参考一下下面的内容。

顺便一提,如果决定要进行人工读校,不管怎么操作,都是成本最高的一种方式。建议还是在读校前用软件把文本中常见的错别字之类的问题先处理一下,读校时可以不用面对这么多可以提前解决的问题。使用上面链接中脚本的自动校正功能,可以有效减少读校改错的操作数,建议也了解一下用法。

每一章文本改两三处程序无法识别的随机错误,和每一章都重复改多处经典常见的、能被软件提前抓出的错误,这两种操作方式相信可以很轻易地看出哪种更为合理。



1.如何进行校对批注

(1)需要保证同一处批注中包含“改前”和“改后”的对应内容:
比如在阅读软件中的划线句子为“原上韩山石径斜”,那就需要在这个划线上进行批注,
最好是通过“复制文本”(基本每个阅读软件都有的功能)的方式,将“原上韩山石径斜”复制为笔记/批注内容,
然后在批注的输入框里自己把这一句改成正确的“远上寒山石径斜”。

这时,这一处批注应该会变成:

划线内容:“原上韩山石径斜”
批注内容:“远上寒山石径斜”


这样就可以预见,在进行文本替换的时候,只要搜索“原上韩山石径斜”,替换为“远上寒山石径斜”,就完成了这一处的修改校正了。

只要你能按照这个模式进行批注(每次都要复制粘贴原文是挺麻烦的,也可以参考下面【更新】的更便捷的标记方式,提供了一些比较简便的操作规则,可以避免每次都要复制粘贴),那后续的脚本操作就支持把任意数量的批注,自动转换为校正表,实现一键通过校正脚本进行校对替换,就不用再到各种编辑器中一个个改了。

(2)支持的软件:
多看
calibre(pc 端)
文石 neoreader

掌阅
微信读书
阅读 Legado
静读天下


目前支持上述几种软件的批注格式,只要是用这几种软件做的划线批注,都应该会自动生成相应格式的笔记文本。
不管是来自 pc、手机、平板、墨水屏阅读器,都能进行转换和替换。

如果是 epub 或者 txt 书籍,可以直接支持替换,不需要转格式;
其他格式的书则需要自行转成 epub 或 txt 来进行替换(阅读和批注的过程中不用转,只在统一替换的时候进行转换即可)。

(3)注意事项和使用局限:
  • 做批注的过程中,要尽可能地让划线内容有辨识度(稍微长一点最好,如果能带上句子前后的句号逗号等,更是好中好,不要只是一两个字或几个没什么特色的词)。
  • 批注内容的开头部分不能是上面示例中的所有批注标记(不能以“注:”、“想法:”、“【批注】”、“>> ”、“————”、“content:”的字样作为开头),否则大概率会转换错乱。
  • 批注不支持换段,不支持换段,不支持换段,每一处批注都必须限制在同一段落内,目前各种软件五花八门的批注格式很多,想要识别换段的内容比较麻烦,如果一处批注换了段,会导致全体批注无法转换。【更新】现已支持识别和处理跨行的划线和批注,可以通过复制粘贴的方式调整多行划线内容的合并分行或者拆分。(生效前提是换行符必须为 \n,也就是 LF,如果文本中的换行符是 \r\n,可以自行调整文本的换行符,或在生成的“临时校对表”中手动把 \n 换为 \r\n。 txt 文本要按照论坛格式,调整为每行开头缩进两个全角空格,段落间无空行;epub 文本要保证正文的段落以 <p></p> 标签包裹,缩进 2 个或 4 个空格,段落间无空行。)



2.如何将批注转成替换表并一键替换

(1)从软件中导出批注并转换成临时替换表:
上面列出的几种软件都支持批注导出,把导出来的批注文件(一般都是 txt 吧,其他格式也都支持),放置到脚本的 logs 文件夹中(将 FixText.zip 附件解压后可见);
然后执行【双击运行】9.从批注中生成校对表.bat;
脚本执行完成后,会在 src/maps 文件夹中生成对应的结果文件:5.临时校对表.php

在执行替换前,最好先打开 5.临时校对表.php 检查下里面的替换词条是否有缺漏和错误,避免执行出错。

文件示例内容如下:

临时替换表:
$tempMap = [
    ['before' => "原上韩山石径斜", 'after' => "远上寒山石径斜"],
    ['before' => "第额处修改", 'after' => "第二处修改"],
];


额外信息:
[
    {
        "before": "三英战吕部",
        "after": "!这本书里所有的“吕布”都错写成了“吕部”,后续统一修改。"
    }
]


其中,“$tempMap”的内容就是后续脚本中用来进行一对一替换的临时替换表,里面可以有非常多的批注词条。

再另外说明一下【额外信息】的含义:
在做批注的过程中,除了可以有“划线”“批注”一对一的内容之外,也可以在批注的开头第一个字符位置输入中文感叹号【!】,用来记录一些额外的校对提醒信息。
脚本转换批注的过程中,只要碰到开头是!的批注内容,就不会让这一处批注进入临时替换表,而是单独放到【额外信息】里显示出来,供校对使用。

【更新】

新增一些更便捷的标记方式,可以省去一些复制粘贴操作:

①“的地得”“在再”“象像”等等修改
很多时候其实只想更改“的地得”的字符。
可以按如下方式进行标记:

笔,重重的画了个
【批注】地
-------------------
吃的很是尴尬。面对
【批注】得
-------------------


划线的部分包含需要更改的“的地得”词句,而标注则只写单个字符:“的”或“地”或“得”,省去复制粘贴的步骤。

这样的笔记会自动转换成替换词条(将 before 的所有“的地得”字符都换成【批注】的值,自动生成对应的 after 内容)

    ['before' => "笔,重重的画了个", 'after' => "笔,重重地画了个"],
    ['before' => "吃的很是尴尬。面对", 'after' => "吃得很是尴尬。面对"],


按同样的标注方式,还可支持“在再”“象像相”“扔仍”“摸模”等等规则,具体支持的转换规则全部写在 src/config/general.php 文件的 fixedNoteRules 配置中。
开头有写一些转换逻辑的注释,当然能否理解就随缘吧。
不用强行去记里面有哪些规则,很多常见的混淆字修改都已经写进去了。
应该是在做这种标记的时候,思考一下配置里是否有你当前写的这个字的转换规则。
比如当你在标注中写“帖”字的时候,应该就是想把划线句子中的“贴”字统一转为“帖”字。
这时可以搜索一下配置中是否已有对应的规则记录,没有的话可以自行添加。

多操作几遍,估计配置中很多常见的转换你就会熟悉了。

只要是用写在这个配置里的转换规则进行修改,个人感觉操作体验比起之前的复制粘贴整个句子有明显的改善。

现在再提供同时使用多种规则的写法:
可以在批注中用 # 分隔多个关键字,例如将批注写成:或者“地#在”
这样相当于同时使用了 ["的", "地", "得"] 和 ["在", "再"] 两种规则。
会把划线内容中所有的 ["的", "地", "得"] 都统一为“地”,同时把所有的 ["在", "再"] 都统一为“在”。
也可以继续多加规则如:“地#在#拨”等等,同时替换更多的关键字。


②支持手动输入 xxx@yyy 格式的批注来将 xxx 定向替换为 yyy
如果你不想去接触上面的“fixedNoteRules”配置里的规则,也可以在批注中自己标记“的@地”或者“拔@拨”等等搭配。
脚本会自动在划线内容中,将【@】前面的值替换为后面的值。
你甚至可以按照上面的多种规则的写法,写成【的@地#拔@拨】这种同时替换多种字符的格式。
不过如果有心思这么写,可能还不如直接复制粘贴就是了。


③如果在支持的软件中直接【高亮】或【划线】,不写批注内容,则会在临时校对表中直接生成 before 与 after 的值相等的内容,例如:

   ['before' => "原上寒山石井写", 'after' => "原上寒山石井写"], // before 与 after 值相等
   ['before' => "第额处修改", 'after' => "第额处修改"], // before 与 after 值相等


这样的词条会带上“// before 与 after 值相等”的后缀注释,被统一放到临时校对表文件的开头,需要自行识别每处应该改成什么,手动修改 after 值,换成实际需要的内容,然后也是一键替换即可。

(2)利用临时替换表对书籍进行一键校正:
①将需要校对的书籍放置到 books 文件夹;
执行【双击运行】10.通过批注校对表进行替换.bat;

即可利用上面的临时替换表,完成文本校正(支持 txt 和 epub 格式的书籍)。

然后也可以通过 beyond compare 比较 books 和 booksBak 中的文件,进行替换结果的确认,只要你的批注内容辨识度比较高,是基本不可能出现误伤的。

如果是 epub 的书籍,改动都应用到了 books 和 booksBak 文件夹中转换出来的带【EPUB合并文件】前缀的 txt 文件中,使用 BC 直接比较带有此前缀的 txt 文件,即可确认修改效果。

然后执行 6.EPUB 文本拆分还原(从 TXT 中拆分).bat 进行还原,会把带前缀的 txt 文件重新拆分成 epub,覆盖掉原有的文件。

②完成校正后,执行【双击运行】7.书籍清理(全部删除,包括备份).bat;
会自动将所有批注文件、临时校对表、原书籍文件删除,清理数据。



如果能理解并按照上面的流程进行“批注+一键替换”,同一本书可以在支持的任意软件中阅读任意的篇章并进行批注
比如,前半本书是在微信读书里读的,做了 40 条批注;
后半本是在 pc 端的 calibre 读的,做了 50 条批注。

那等到要进行统一替换的时候,只要分别在这两个软件导出两个批注文件,统一放到 logs 文件夹中,然后执行批注转换,
会把这 40+50 条批注统一合并成一个替换表,后续也是一键进行替换即可。



PS:这个“将批注转换为替换表,并一键替换”的逻辑其实很简单,代码也是随便写一下就能实现。

当然,要使用一个工具的时候,肯定是希望这个工具能低成本地提升一些操作效率。
如果你觉得上面提到的思路和流程的理解成本比较高,或者不认同这样的操作流程(特别是要复制粘贴原文进行批注,我也觉得很无语),
也感受不到这样的批量替换能带来的效率提升,当然可以继续按照自己的方式去做校对批注^_^(因为这个思路我也是突发奇想瞎鼓捣的,仅供参考仅供参考,若有更好的想法也欢迎交流)。

最简单的做法当然是完全不去改错别字,毕竟脑补也能解决问题,网文本身也不存在什么实在价值。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 1威望 +2 铜币 +5 收起 理由
杨超越 + 2 + 5 感谢您为论坛发书,致敬!

查看全部评分

[发帖际遇]: edennow 帮路人搬东西,为补偿体力,消耗了 2 铜币. 幸运榜 / 衰神榜
回复

使用道具 举报

用户组:秀才

宠辱不惊,闲看庭前花开花落;去留无意,漫随天外云卷云舒

      UID
2535
      积分
575
      回帖
188
      主题
10
      发书数
7
      威望
469
      铜币
6834
      贡献
0
      阅读权限
40
      注册时间
2025-3-2
      在线时间
224 小时
      最后登录
2025-5-1
发表于 2025-3-12 22:27 | 显示全部楼层
我都是标注后再找个时间修改txt,主要还是习惯用的软件不支持导出批注,不然脚本处理能省挺多事的。
[发帖际遇]: Llinx 乱扔果皮,被红袖标大妈罚款 2 铜币. 幸运榜 / 衰神榜
回复

使用道具 举报

用户组:儒士

      UID
1796
      积分
405
      回帖
92
      主题
12
      发书数
6
      威望
347
      铜币
8948
      贡献
0
      阅读权限
30
      注册时间
2025-3-1
      在线时间
67 小时
      最后登录
2025-5-1
 楼主| 发表于 2025-3-12 23:06 | 显示全部楼层
Llinx 发表于 2025-3-12 22:27
我都是标注后再找个时间修改txt,主要还是习惯用的软件不支持导出批注,不然脚本处理能省挺多事的。 ...

有些软件连复制粘贴的功能都没有哈哈,有时候标记得多了改起来确实挺心累的。
[发帖际遇]: “宝宝不开心”,edennow 获得奖励棒棒糖一根,价值 3 铜币. 幸运榜 / 衰神榜
回复

使用道具 举报

用户组:儒士

      UID
365
      积分
320
      回帖
83
      主题
15
      发书数
5
      威望
266
      铜币
5583
      贡献
0
      阅读权限
30
      注册时间
2025-3-1
      在线时间
89 小时
      最后登录
2025-5-1
发表于 2025-3-16 20:13 | 显示全部楼层
试了一下真好用,我提个建议。把批注导出文件的格式也放在攻略里。我第一次使用的时候因为没有参考案例以为是版本出现了问题。有简单格式的话其他软件的批注也能使用这个脚本。

我用文石导出的批注是:

2025-03-12 21:53  |  页码:50191
他再人为的给自身大道制定边界
【批注】他在人为的给自身大道制定边界
-------------------


阅读导出的批注是:

  {
    "bookAuthor": "天涯月照今",
    "bookName": "我每月能刷新金手指",
    "bookText": "他再人为的给自身大道制定边界",
    "chapterIndex": 1025,
    "chapterName": "第1025章 无敌是一种寂寞",
    "chapterPos": 50206,
    "content": "他在人为的给自身大道制定边界",
    "time": 1742115562646
  }


对比下来文石这个批注如果批量修改起来会简单很多,其他软件的批注没尝试。



[发帖际遇]: chaowen08 身为一个火星人,到地球考察花了 4 铜币. 幸运榜 / 衰神榜
回复

使用道具 举报

用户组:儒士

      UID
1796
      积分
405
      回帖
92
      主题
12
      发书数
6
      威望
347
      铜币
8948
      贡献
0
      阅读权限
30
      注册时间
2025-3-1
      在线时间
67 小时
      最后登录
2025-5-1
 楼主| 发表于 2025-3-16 20:19 | 显示全部楼层
chaowen08 发表于 2025-3-16 20:13
试了一下真好用,我提个建议。把批注导出文件的格式也放在攻略里。我第一次使用的时候因为没有参考案例以为 ...

我原来每种软件都写了示例,不过一眼看过去格式太多了,反而有点眼花,就只保留了软件名。
反正要用的话肯定要测试的,要是用户有问题也可以反馈。
回复

使用道具 举报

用户组:儒士

      UID
365
      积分
320
      回帖
83
      主题
15
      发书数
5
      威望
266
      铜币
5583
      贡献
0
      阅读权限
30
      注册时间
2025-3-1
      在线时间
89 小时
      最后登录
2025-5-1
发表于 2025-3-21 06:01 | 显示全部楼层
本帖最后由 chaowen08 于 2025-3-21 06:45 编辑

复制粘贴原文进行批注这个操作有点麻烦啊,不知道脚本能不能实现自动复制批注并添加到备注,
比如我在文石导出的无备注批注:

2025-03-12 21:53  |  页码:50191
他再人为的给自身大道制定边界
-------------------
替换成有备注:
2025-03-12 21:53  |  页码:50191
【批注】他在人为的给自身大道制定边界
-------------------

或者能直接将无备注批注替换成:

    ['before' => "他再人为的给自身大道制定边界", 'after' => "他再人为的给自身大道制定边界"],

这样的话就不用在看书时复制粘贴修改了,只用修改after然后一次性在电脑上修改完运行脚本。

因为我都是用电脑手机看书时顺手批注的,所以每次复制批注粘贴修改这个操作完成一次至少5秒,为了修改一个字或者两个字这样的操作实在让人糟心。


点评

另外也加了一些“的地得”之类的简便标记方式,可以看下面最新楼层的更新。  发表于 2025-3-21 19:26
回复

使用道具 举报

用户组:儒士

      UID
1796
      积分
405
      回帖
92
      主题
12
      发书数
6
      威望
347
      铜币
8948
      贡献
0
      阅读权限
30
      注册时间
2025-3-1
      在线时间
67 小时
      最后登录
2025-5-1
 楼主| 发表于 2025-3-21 11:18 | 显示全部楼层
chaowen08 发表于 2025-3-21 06:01
复制粘贴原文进行批注这个操作有点麻烦啊,不知道脚本能不能实现自动复制批注并添加到备注,
比如我在文石 ...

你说的这样要做肯定能做,不过我感觉其实用起来也挺麻烦的。如果笔记多了需要识别每处的哪里要改,要改成什么样,也得花一些时间。

按照帖子里说的每次复制粘贴花个五秒,每章文本的总耗时其实大概率也不会超过半分钟(如果你有提前用软件处理错别字的话)。如果实在太多要改的,建议还是用那些可以直接编辑的软件来改吧。
回复

使用道具 举报

用户组:儒士

      UID
1796
      积分
405
      回帖
92
      主题
12
      发书数
6
      威望
347
      铜币
8948
      贡献
0
      阅读权限
30
      注册时间
2025-3-1
      在线时间
67 小时
      最后登录
2025-5-1
 楼主| 发表于 2025-3-21 12:00 | 显示全部楼层
本帖最后由 edennow 于 2025-3-26 14:57 编辑

内容重复的楼层

回复

使用道具 举报

用户组:童生

      UID
11536
      积分
157
      回帖
108
      主题
1
      发书数
0
      威望
102
      铜币
2085
      贡献
0
      阅读权限
20
      注册时间
2025-3-18
      在线时间
44 小时
      最后登录
2025-5-1
发表于 2025-3-22 18:17 来自手机 | 显示全部楼层
可能就会选择通过阅读软件自带的“标记/高亮/批注/笔记”(在我看来是同一回事)——没毛病,我也是这么认为的
回复

使用道具 举报

用户组:秀才

宠辱不惊,闲看庭前花开花落;去留无意,漫随天外云卷云舒

      UID
2535
      积分
575
      回帖
188
      主题
10
      发书数
7
      威望
469
      铜币
6834
      贡献
0
      阅读权限
40
      注册时间
2025-3-2
      在线时间
224 小时
      最后登录
2025-5-1
发表于 2025-3-23 00:19 | 显示全部楼层
本帖最后由 Llinx 于 2025-3-23 00:30 编辑

稍微研究了不能批量导出批注的软件如何将批注导出,希望能给像我一样(无聊)的坛友点帮助。

我使用的软件包名为【com.flyersoft.seekbooks】
因为是纯本地阅读软件,相关批注肯定保存在本地,首先在Android/data/com.flyersoft.seekbooks/ 文件夹里寻找(大概率没有),那么接下来在:
1、/data/data/com.flyersoft.seekbooks/ 里寻找 (需要手机有root权限)
2、使用手机系统自带的备份,将软件备份。然后再去相关文件夹寻找文件(一般都会写备份到什么地方)。

我这软件找到的是一个db文件,一般就是用的sqlite了,不确定是不是也可以看看文件头。
然后就很简单了,确定标注保存在哪个表,直接写sql获取,然后再保存为json之类的文件。
对json进行修改后再写读取json并对原文替换

当然最便捷就是用该帖推荐的几个软件(
[发帖际遇]: Llinx 坐公交车睡着,被偷走 4 铜币. 幸运榜 / 衰神榜
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|阡陌居

GMT+8, 2025-5-1 20:33 , Processed in 0.067798 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表