纸书和电子书混着收,书目怎么合成一份:主键、字段差异与去重

· 约 4 分钟 🏷️ EPUB 元数据编辑

同时收纸书和电子书的人,迟早会撞上同一件事:手上明明有电子版,在书店又买了一本纸书。

想解决它,就得让两边的书目能一起查。但真动手就会发现,两边的字段根本对不齐。

先决定:合并到什么程度

分开存,但要能一起查。 这两件事不矛盾,而且这是最省事的组合。

为什么不建议物理合并成一张表:

纸书需要电子书需要
特有字段位置、状态、借出人、购入日期格式、文件位置、阅读进度、设备
主要动作找得到、借得回传得到设备上、搜得到内容
数量级几百常常几千

合并成一张表的直接后果是一半的列常年为空,看着就不想维护。而且每次操作前你都得先想「这条是哪种载体」。

但为什么又必须能一起查: 你真正要防的是「有电子版还买纸书」和「有纸书又买电子版」,这只有在同一次查询里看得到两边时才拦得住。

折中方案:以纸书书目为主,电子书只登记「我有电子版」这一个标记。 格式、文件路径、阅读进度一律不进来。

判断某个字段该不该进合并表,一句话:只对一种载体有意义的字段,就不该进。

主键:ISBN 优先,但一定要有兜底

问题在于大量电子书根本没有 ISBN

电子书来源有没有 ISBN
正版电子书店通常有,且与纸书版对应
出版社自出的 EPUB可能有,也可能只有内部编号
自制 / 扫描 / 网络来源基本没有,identifier 常是随机 UUID
自出版平台有 979-8 书号,但公共库查不到元数据

兜底用书名 + 作者做次级键,规范化至少要做四件事:去掉书名号、去掉副标题、繁简统一、清理全角半角空格差异。

次级键既会漏报(译名不同、副标题写法不同),也会误报(同名书、上下册)。所以规则应该是:

  • 主键匹配 → 自动合并
  • 次级键匹配 → 只做提示,人来确认

别试图全自动。

同一本书的纸质版和电子版,不是重复

它们是同一本书的两种载体。用途不同——纸书用来读和收藏,电子版用来检索、摘录、出门带。很多人是有意两个都收的。

但它们必须能互相看见,因为最常见的浪费恰恰发生在这里。

建议的表达方式:一条记录,加一个「载体」字段,可以同时勾选纸质和电子。 而不是建两条。

好处很直接:

  • 查重时天然命中
  • 统计藏书量时不会重复计数
  • 「我有这本的电子版吗」变成一个能查的问题

唯一的例外:如果纸书和电子版是不同版本(不同译者、不同出版社),那就是两本书,不该合成一条。

合并之前,必须先修元数据

EPUB 的元数据由制作方随手填写,没有任何强制校验,而且后续每一次格式转换都可能再破坏一次。

常见的脏数据:

  • 作者写成「佚名」「未知」,或者制作者的网名
  • 书名带一堆后缀:(精校版)【全本】_v2
  • identifier 是随机 UUID,不是 ISBN
  • 语言标成 en,中文排版规则跟着出错
  • 系列和序号全空,同一套书在阅读器里散落各处

为什么必须先修再合并: 你的次级键靠的就是书名和作者。这两个字段脏,去重必然失效——《百年孤独》(精校版) 永远匹配不上纸书那条 百年孤独

顺序是:先批量清洗元数据 → 再导出书目 → 最后合并。 反过来做,你会在合并表里重复清洗同一批脏数据。

清洗到什么程度就够

只管四个字段:

书名——去掉制作方后缀;副标题统一处理,要么都带要么都不带;不要自己改写原书名。

作者——译名统一到一个写法,这是收益最大的一条;多作者用统一分隔符;别把译者塞进作者字段。

ISBN——没有就留空。不要用纸质版的书号硬填,那会让两条记录被误判成同一册;除非你确认这份电子版就是该纸质版的官方电子版。

系列与序号——Calibre 和 EPUB3 记系列的字段不是同一个,两边都写上兼容性最好。

出版社、出版日期、简介、封面不用清洗——它们不参与去重。

维护规则:单向,不要双向

合并完成之后,定一条规则再往下走:

新书从哪一边进,就在哪一边先落库,另一边只做标记。

推荐以纸书书目为主库——纸书有位置、借还这些必须逐册管理的信息,天然需要一份正式记录。电子书进来时先查主库,有就在那条记录上勾「电子版」,没有就新建并标明只有电子版。

双向同步在没有工具支撑的情况下必然失同步。 两边各改一次,就再也对不上了。

节奏上:

  • 纸书当场登记,这一步不能省——纸书没有文件系统兜底,漏了就是真漏了。
  • 电子书可以攒,文件本身就是备份,不会丢。
  • 每隔一段时间批量把新增电子书对一遍主库。

最后一个提醒:不要追求两边完全对齐。 能拦住重复购买,就已经拿到九成收益了。剩下的完整度是收藏癖,不是需求——而为收藏癖付出的维护成本,往往就是整套书目最后被放弃的原因。

❓ 常见问题

纸书和电子书的书目该合成一份,还是分开管?

分开存,但要能一起查——这两件事不矛盾为什么不建议物理合并成一张表:(1) 字段差异太大,合并后一半列常年为空,看着就想放弃维护;(2) 两边的动作完全不同——纸书要管位置和借还,电子书要管格式和设备同步,塞进一张表后每次操作都得先想「这是哪种」;(3) 电子书天然有目录树和文件名,本身就是一份索引,再抄一遍是重复劳动。为什么又必须能一起查你真正需要防的是「有电子版还买了纸书」和「有纸书又买了电子版」,这只有在同一次查询里能看到两边时才拦得住。可行的折中:以纸书书目为主,电子书只登记「我有电子版」这一个标记,不把格式、文件路径、阅读进度搬进来。判断标准:如果一个字段只对其中一种载体有意义,它就不该进合并后的表。

合并书目该用什么当主键?

ISBN 优先,但必须准备好兜底,因为大量电子书根本没有 ISBN分情况:(1) 正版电子书店买的——通常有 ISBN,且和纸书版一致或对应;(2) 出版社自出的 EPUB——可能有,也可能只写了内部编号;(3) 自制、扫描、网络来源的——基本没有,元数据里的 identifier 常常是一串随机 UUID 甚至空白;(4) 自出版平台的书——有 979-8 开头的书号,但公共书目库里查不到元数据。兜底方案:用书名 + 作者做规范化后的次级键。规范化至少要做:去掉《》、去掉副标题、繁简统一、去掉全角半角空格差异。必须承认的现实:次级键既会漏报(译名不同、副标题写法不同)也会误报(同名书、上下册)。所以结论是:主键匹配上的自动合并,次级键匹配上的只做提示、由人确认——不要试图全自动。

同一本书,纸质版和电子版算重复吗?

不算重复,但必须能互相看见——它们是同一本书的两种载体,不是两条独立记录为什么不算重复:(1) 用途不同——纸书用来读和收藏,电子版用来检索、摘录、出门带;(2) 很多人是有意两个都收的。为什么必须能互相看见最常见的浪费恰恰发生在这里——手上有电子版忘了,在书店又买一本纸书;或者书架上有纸书,出门时在电子书店又买一遍。建议的表达方式:一条书目记录,加一个「载体」字段,可以同时勾选纸质和电子,而不是建两条记录。这样处理的好处:(1) 查重时天然命中;(2) 统计藏书量时不会重复计数;(3) 「我有这本书的电子版吗」变成一个能查的问题。唯一要注意的:如果纸书和电子版是不同版本(不同译者、不同出版社),那就是两本书,不该合成一条。

EPUB 的元数据为什么经常是错的?

因为它由制作方随手填写,没有任何强制校验,而后续每一次转换都可能再破坏一次常见问题:(1) 作者字段写成了「佚名」「未知」或制作者的网名;(2) 书名带了一堆后缀——「(精校版)」「【全本】」「_v2」;(3) identifier 是随机 UUID,不是 ISBN;(4) 语言标成 en,中文书排版规则随之出错;(5) 系列和序号完全空缺,导致阅读器里同一套书散落各处。为什么必须先修再合并:(1) 你的次级键靠的就是书名和作者,这两个字段脏,去重必然失效;(2) 「(精校版)」这种后缀会让同一本书永远匹配不上纸质版记录;(3) 作者名的译名差异,是中文书目里最大的一类噪声。处理顺序先批量清洗元数据,再导出书目,最后才合并。反过来做,你会在合并表里重复清洗同一批脏数据。

电子书元数据要清洗到什么程度?

四个字段够了:书名、作者、ISBN(有就填)、系列与序号书名的清洗规则:(1) 去掉「精校版」「全本」「修订」这类制作方后缀;(2) 副标题统一处理——要么都带要么都不带,别一半一半;(3) 保留原书名,不要自己改写。作者的清洗规则:(1) 译名统一到一个写法,这是收益最大的一条;(2) 多作者用统一分隔符;(3) 别把译者塞进作者字段。关于 ISBN:(1) 电子书没有就留空,不要用纸质版的 ISBN 硬填——那会让两条记录被误判成同一册;(2) 除非你确认这份电子版就是该纸质版的官方电子版。关于系列:Calibre 和 EPUB3 记系列的字段不是同一个,两边都写上兼容性最好。不用清洗的:出版社、出版日期、简介、封面——它们不参与去重,看着别扭再说。

合并之后怎么维护,才不会又乱掉?

定一条单向规则:新书从哪一边进,就在哪一边先落库,另一边只做标记推荐的规则:(1) 以纸书书目为主库——因为纸书有位置、借还这些必须逐册管理的信息,天然需要一份正式记录;(2) 电子书进来时,先查主库有没有同一本,有就在那条记录上勾「电子版」,没有就新建一条并标明只有电子版;(3) 纸书进来时同理。为什么要单向:双向同步在没有工具支撑的情况下必然失同步,两边各改一次就再也对不上了。维护节奏:(1) 纸书当场登记,这一步不能省;(2) 电子书可以攒——它们不会丢,文件系统本身就是备份;(3) 每隔一段时间批量把新增电子书对一遍主库。一个提醒:不要追求两边完全对齐。能拦住重复购买就已经拿到九成收益了,剩下的完整度是收藏癖,不是需求。

🏷️ 打开 EPUB 元数据编辑 改书名/作者/出版社/系列/标签·替换封面·非破坏保留正文·Calibre+EPUB3 双字段·多本批量·本地处理
家书馆微信小程序码

微信小程序 家书馆 · 家庭藏书管理

买书前先查一下,别再买重。扫一下书背后的条码就登记进家里的书库, 记得清放在哪一格、借给了谁,全家人共用同一个库。

📷 微信「扫一扫」左侧小程序码即可打开

👆 长按上方小程序码,识别打开「家书馆」

看看它能做什么 →

📖 同一工具的其他教程

🔗 相关阅读

全部教程 →