VerbaAurea 是一个智能文档预处理工具,致力于将原始文档转化为"黄金"般的知识,为知识库构建提供高质量的文本数据。它专注于文档智能分割,确保语义完整性,为知识库检索和大语言模型微调提供优质素材。
知识库构建 - 为检索式问答系统提供合适粒度的文本单元
语料库准备 - 为大语言模型微调准备高质量的训练数据
文档索引 - 优化文档检索系统的索引单元
内容管理 - 改进内容管理系统中的文档组织方式
├── main.py # 命令行主程序入口 ├── web_service.py # Web服务主程序 ├── config_manager.py # 配置管理 ├── document_processor.py # 文档处理核心 ├── pdf_processor.py # pdf文档处理核心 ├── text_analysis.py # 文本分析功能 ├── parallel_processor.py # 并行处理实现 ├── utils.py # 工具函数 ├── config.json # 配置文件 ├── requirements.txt # 项目依赖 ├── templates/ # Web界面模板 │ └── index.html # 主页面模板 ├── static/ # 静态资源 │ ├── style.css # 样式文件 │ └── script.js # 前端脚本 ├── uploads/ # 上传文件临时目录 ├── processed/ # 处理结果目录 ├── README.md # 中文文档 ├── README_EN.md # 英文文档 ├── LICENSE # 开源许可证 └── 启动Web服务.bat # Windows快速启动脚本
git clone https://github.com/yourusername/VerbaAurea.git
cd VerbaAurea
pip install -r requirements.txt
python web_service.py
或在Windows系统中双击 启动Web服务.bat 文件
打开浏览器访问 http://localhost:18080
使用Web界面进行文档处理:
python main.py
根据菜单选择操作:
1 开始处理文档2 查看当前配置3 编辑配置4 退出程序处理后的文档将保存在processed(默认)或自定义的输出文件夹中
可以通过菜单编辑或直接修改config.json文件定制分割参数:
max_length: 最大段落长度。控制每个分割后文本块的最大字符数。过大可能导致检索效率下降,过小可能破坏语义完整性。min_length: 最小段落长度。(防止生成太短的片段。过短的文本块可能缺乏足够上下文,影响知识库质量。sentence_integrity_weight: 句子完整性权重。值越大,系统越倾向于保持句子完整,减少在句子中间分割的可能性。debug_mode: 调试模式。启用后会输出详细的处理信息,包括分割点评分、计算过程等。(该设置目前主要用于算法优化研究上)。output_folder: 输出文件夹名称。处理后的文档将保存在此文件夹中,保持原始目录结构。skip_existing: 是否跳过已存在的文件min_split_score: 最小分割得分。只有评分高于此值的位置才会被选为分割点。提高此值可减少分割点数量。heading_score_bonus: 标题加分值。在标题前后分割通常更合理,此参数控制标题位置的优先级。sentence_end_score_bonus: 句子结束加分值。增加此值会优先在句子边界处分割,提高文档语义完整性。length_score_factor: 长度评分因子。控制段落长度对评分的影响程度,较大值会产生更均匀的分割。search_window: 搜索窗口大小。当需要调整分割点到句子边界时,系统会在此窗口范围内搜索最近的句子边界。num_workers: 工作进程数。设为0会自动使用(CPU核心数-1)个进程。可根据系统资源情况调整。cache_size: 缓存大小。用于存储文本分析结果以避免重复计算,提高处理速度。单位为条目数。batch_size: 批处理大小。每个工作进程一次处理的文件数,较大值可减少进程切换开销。<!--split-->标记Q: 为什么分割后的文档中有些段落太短或太长?
A: 尝试调整配置文件中的 max_length 和 min_length 参数,平衡分割粒度。
Q: 如何避免句子被分割在中间?
A: 提高 sentence_integrity_weight 参数值,默认值为 8.0,可以尝试设置为 10.0 或更高。
Q: 如何处理特殊格式的文档?
A: 对于特殊格式,可以通过调整高级设置中的评分参数来适应不同的文档结构。
以下为主要API端点,所有接口均返回JSON(除下载接口):
健康检查
curl -s http://localhost:18080/api/health
获取/更新配置
curl -s http://localhost:18080/api/config
curl -s -X POST http://localhost:18080/api/config \
-H "Content-Type: application/json" \
-d '{"document_settings": {"max_length": 1200, "min_length": 200}}'
上传文件(只上传,不立即处理)
# 上传DOCX文件
curl -s -F "file=@/path/to/file.docx" http://localhost:18080/api/upload
# 上传PDF文件
curl -s -F "file=@/path/to/file.pdf" http://localhost:18080/api/upload
启动批量处理
curl -s -X POST http://localhost:18080/api/batch/process \
-H "Content-Type: application/json" \
-d '{"session_id": "<SESSION_ID>"}'
查询批量处理状态
curl -s http://localhost:18080/api/batch/status/<SESSION_ID>
批量结果下载(ZIP)
curl -L -o result.zip http://localhost:18080/api/batch/download/<SESSION_ID>
从批处理中移除文件
curl -s -X POST http://localhost:18080/api/batch/remove-file \
-H "Content-Type: application/json" \
-d '{"session_id": "<SESSION_ID>", "file_id": "<FILE_ID>"}'
单文件下载(兼容保留)
欢迎对VerbaAurea项目做出贡献! 您可以通过以下方式参与:
本项目使用 CC BY 4.0 许可协议。