# encoding: UTF-8 # = ExtractBookStruct # ExtractBookStruct的目的是从各类电子书内容中提取书的结构信息。目前支持txt,epub,html。 # ExtractBookStruct选择从TXT文档提取书的结构信息。对TXT的文档要有如下要求: # 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接口 # # === ExtractBookStruct.from_txt # 从文本文件中提取目录结构,使用示例: # ExtractBookStruct.from_txt(‘1.txt’,:title=>‘title’,:author=>‘author’) # # === ExtractBookStruct.from_epub # 从EPUB文件中提取目录结构,使用示例: # ExtractBookStruct.from_epub(‘1.epub’,:title=>‘title’,:author=>‘author’) # # === ExtractBookStruct.from_html # 从HTML中提取目录结构,使用示例: # ExtractBookStruct.from_html(‘1.html’,:title=>‘title’,:author=>‘author’) # # == 命令行工具 # extract_book_struct,使用示例: # extract_book_struct ‘1.txt’, ‘1.xml’ # # == 依赖 # ExtractBookStruct依赖以下工具和包: # ebook-convert: calibre cli tools. # uuid: ruby gem. # iconv: ruby gem.