Skip to content

muxia0396/txt-chapter-detector

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TXT Chapter Detector

纯 Java、离线、零依赖的 TXT 小说目录识别算法。

从完整文本中提取章节标题与 UTF-16 字符偏移,可用于 Android、Kotlin/JVM、桌面 Java 程序或服务端工具。

特性

  • 无网络、无 AI API、无第三方运行时依赖;不会上传用户 TXT 文件。
  • 支持传统标题:第十二章 标题第3卷序章楔子后记完结感言番外:标题
  • 支持数字紧贴标题:1标题2 标题、仅编号标题 38
  • 支持同编号分段:47标题(上)47标题(下)4Part上/下
  • 过滤常见噪声:打赏记录、日期、问卷题号、链接、元数据和正文短句。
  • 返回标题所在原文行号和 UTF-16 字符偏移,可直接用于 Android TextView 跳转。
  • 自带单元测试。

快速开始

ChapterDetector.java 放入项目,调用:

String text = loadYourTxt();
List<ChapterDetector.Chapter> chapters = ChapterDetector.detect(text);

for (ChapterDetector.Chapter chapter : chapters) {
    System.out.println(chapter.line + " | " + chapter.offset + " | " + chapter.title);
}

Kotlin 可直接调用:

val chapters = ChapterDetector.detect(text)
val offset = chapters.first().offset

输出模型

字段 说明
offset 标题行在 Java String 中的 UTF-16 字符偏移
line 从 1 开始的原文行号
title 去除首尾空白后的原始标题行
kind numbered(数字序列)或 explicit(显式标题)
confidence 规则置信等级,94–100;不是机器学习概率

算法概览

  1. 按行扫描文本,记录行号和每行的 UTF-16 起始偏移。
  2. 高置信度识别传统章节、序章、后记和番外。
  3. 收集数字开头的短行,并过滤问卷、打赏、URL、元数据和句末正文。
  4. 只保留从 1 开始的连续编号;同编号仅在“上/下/篇/part”分段时保留。
  5. 合并、按偏移排序、去重并输出章节列表。

Android 跳转示例

offset 与 Android TextView 使用的 UTF-16 下标一致:

int visualLine = layout.getLineForOffset(chapter.offset);
scrollView.smoothScrollTo(0, layout.getLineTop(visualLine));

构建和测试

需要 JDK 8 或更高版本及 Gradle:

gradle test
gradle jar

开源许可

本项目采用 MIT License

English summary

TXT Chapter Detector is a dependency-free Java library for offline novel chapter detection. It supports conventional Chinese headings, numeric-inline headings, split chapters, and common noise filtering.

About

纯 Java、离线、零依赖的 TXT 小说目录识别算法

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages