将原来的 1.py 文件(784行)拆分成多个更小、更易维护的模块。
- 文件名:
1.py - 行数: 784行
- 问题: 单个文件过大,包含多种功能,难以维护
all_to_markdown/
├── __init__.py # 包初始化文件 (30行)
├── main.py # 主程序入口 (20行)
├── utils.py # 工具函数模块 (50行)
├── roman_utils.py # 罗马数字处理模块 (50行)
├── formula_processor.py # 数学公式处理模块 (20行)
├── chapter_header.py # 章节标题识别模块 (150行)
├── content_extractor.py # 内容提取器模块 (400行)
├── text_processor.py # 文本处理模块 (100行)
├── test_refactored.py # 测试脚本 (150行)
├── README.md # 说明文档
└── REFACTORING_SUMMARY.md # 重构总结
总计: 约1170行(包含测试和文档),但功能模块化,每个文件职责单一
- 功能: 通用工具函数
- 包含:
replace_with_clean_blank()- 替换内容并清理空行setup_logger()- 配置日志new_len()- 计算文本长度(支持中英文)- 常量定义(SLICE_POINT1, SLICE_POINT2, SLICE_POINT3)
- 功能: 罗马数字处理
- 包含:
RomanNum.IntToRoman()- 整数转罗马数字RomanNum.generate_roman_numerals()- 生成罗马数字集合RomanNum.normalize_roman_numerals()- 标准化罗马数字
- 功能: 数学公式处理
- 包含:
FormulaProcessor.is_complex_formular()- 判断复杂公式FormulaProcessor.restore_formular()- 恢复公式格式
- 功能: 章节标题识别
- 包含:
- 多种标题识别规则(Markdown、文本、点号、括号等)
ChapterHeader.rule_based_is_chapter_header()- 基于规则的标题识别ChapterHeader.llm_based_is_chapter_header()- 基于LLM的标题识别
- 功能: 内容提取器
- 包含:
ContentExtractor.get_html_table()- 提取HTML表格ContentExtractor.get_markdown_table()- 提取Markdown表格ContentExtractor.get_markdown_image()- 提取图片ContentExtractor.get_markdown_formula()- 提取数学公式ContentExtractor.get_markdown_code_block()- 提取代码块ContentExtractor.full_process()- 完整处理流程
- 功能: 文本处理
- 包含:
process_text_file()- 处理文本文件marking_title()- 标记标题test0()- 测试函数
- 功能: 主程序入口
- 包含: 使用示例
- 每个模块职责单一,易于理解和维护
- 代码结构清晰,便于定位问题
- 各个功能模块可以独立使用
- 可以根据需要导入特定功能
- 每个模块都可以单独测试
- 提供了完整的测试脚本
- 新增功能时只需要修改相应的模块
- 不会影响其他模块的功能
- 从784行的大文件拆分成多个小文件
- 每个文件都有明确的职责和功能
运行 test_refactored.py 的结果:
✓ utils模块导入成功
✓ roman_utils模块导入成功
✓ formula_processor模块导入成功
✓ chapter_header模块导入成功
✓ content_extractor模块导入成功
✓ text_processor模块导入成功
✓ 文本替换测试: 通过
✓ 中文长度: 4, 英文长度: 2
✓ 罗马数字转换: 15 -> ['XV', 'xv']
✓ 复杂公式检测: True
✓ 章节标题识别: (True, 0)
✓ Markdown表格提取: 找到 2 个表格
✓ 图片提取: 找到 1 个图片
✓ 公式提取: 找到 1 个公式
所有测试完成!
# 导入整个包
from all_to_markdown import test0, ChapterHeader
# 或者导入特定模块
from all_to_markdown.content_extractor import ContentExtractor
from all_to_markdown.chapter_header import ChapterHeader原有的 1.py 文件仍然保留,可以继续使用,但建议迁移到新的模块化结构。
重构成功将784行的单一文件拆分成多个职责明确的模块,提高了代码的可维护性、可测试性和可扩展性。所有原有功能都得到保留,同时提供了更好的代码组织结构。