encoding: UTF-8
1. 文档的编码格式必须是UTF-8或GB2312,推荐使用UTF-8格式
2. 文档的内容只包含书内容部分(书名、作者、目录等信息应该不包含在文档内)
3. 文档的段落应该完整(有些PDF转换过来的文档会破坏句子,需要进行预处理)
4. 文档必须符合正常的文档流(错位的章节段落等情况将影响正常的结构提取)
5. 文档需要包含结构信息(例如: 卷、篇、部分、章(回)节或者有连续的序号)
6. 每个结构信息都应该独立成行。
文档结构信息分析
一本书在编排的时候会有自己的结构信息,这些结构信息通常通过卷、篇、部分、章(回)节等表述,也会使用序号的方式表述。总体上可以分为以下几种:
1. 文本描述(text): 按卷、部分(篇)、章(回)、节等文字表述
2. 数字描述(digital): 所有结构信息都是按照数字序号表示,比如 1 xxxxx; 1.1 xxxxx
3. 混合描述(hybrid):章按照文字表述,节按照序号表示,比如 1.1 xxxxxx
根据不同的类型,对结构信息的提取采用不同的处理手段。
有效的标题信息应该符合以下规则:
1. 标题应该不包含完整的句子(应该不包含句子分隔符,例如“。","!"等)
2. 应该包含结构信息表述,具体如下:
文本描述:
卷: 以"第xxx卷"开始
以"卷"开始,后面跟序号表述方式,例如 “I”,“Ⅱ”,“1”等
以"volume"开始,后面跟序号表述方式,例如 “I”,“Ⅱ”,“1”等
部分(篇): 以"第xxx部"或"第xxx篇"开始
以"part"开始,后面跟序号表述方式,例如 “I”,“Ⅱ”,“1”等
章(回): 以"第xxx章"或"第xxx回"开始
以"chapter"开始,后面跟序号表述方式,例如 “I”,“Ⅱ”,“1”等
节: 以"第xxx节"开始
前言: 以"前"开始,以"言"结束,中间加入空白字符。例如"前言","前 言"等。
以"序"开始,以"言"结束,中间加入空白字符。例如"序言","序 言"等。
单个"序"
以"序"或"序言"开始,后面跟序号表述方式,例如 “I”,“Ⅱ”,“1”等
"preface"
"foreword"
以"preface"或"foreword"开始,后面跟序号表述方式,例如 “I”,“Ⅱ”,“1”等
索引: 以"索"开始,以"引"结束,中间加入空白字符。例如"索引","索 引"等。
以"索引"开始,后面跟序号表述方式,例如 “I”,“Ⅱ”,“1”等
"index"
以"index"开始,后面跟序号表述方式,例如 “I”,“Ⅱ”,“1”等
附录: 以"附"开始,以"录"结束,中间加入空白字符。例如"附录","附 录"等。
以"附录"开始,后面跟序号表述方式,例如 “I”,“Ⅱ”,“1”等
"appendix"
以"appendix"开始,后面跟序号表述方式,例如 “I”,“Ⅱ”,“1”等
术语: 以"术"开始,以"语"结束,中间加入空白字符。例如"术语","术 语"等。
以"术语"开始,后面跟序号表述方式,例如 “I”,“Ⅱ”,“1”等
"glossary"
以"glossary"开始,后面跟序号表述方式,例如 “I”,“Ⅱ”,“1”等
数字描述:
以数字序号层级表达,数字序号和标题内容之间有空白字符分隔。例如"1 管理的概念", "1.1 定义", "1.1.1 管理"等。
==API接口
从文本文件中提取目录结构,使用示例:
从EPUB文件中提取目录结构,使用示例:
从HTML中提取目录结构,使用示例:
== 命令行工具
== 依赖
ebook-convert: calibre cli tools.
uuid: ruby gem.
iconv: ruby gem.