目录
进入docker容器
docker exec -it ragflow-server /bin/bash
一、写自己的文档解析代码
来到路径
/ragflow/deepdoc/parser/
在该目录下创建自己的文档解析文件,可以参考txt_parser.py
- 其中fnm是文件名、binary是二进制文件数据
- 如果你写的文件能通过二进制直接解析,那么
return self.parser_txt(txt, chunk_token_num, delimiter)
这里就不用动了 - fnm讲道理应该是文件路径的,因为
with open(fnm, "r") as f:
,但是我实验时,得到的都是文件名,这个不能作为路径去打开文件
1、def __call__
所以,这部分函数在改动时,能直接走二进制数据流的就是删除else:
和后面的代码直到return
即可
不能走通的,就使用txt = fnm
,在naive.py
给到临时文件路径,在def parser_txt
解析即可
2、def parser_txt
这里比较简单,自己的解析完成后,将分好的段落放入列表text_list
,返回时为
return [[c,""] for c in text_list]
3、__init__.py
仿照其他解析器,导入即可
二、导入到naive.py
1、找到文件
/ragflow/rag/app/naive.py
2、添加代码
from deepdoc.parser import yourParser
import tempfile
# 236行添加新的elif,我这里以vsdx文件为例
elif re.search(r"\.vsdx$", filename, re.IGNORECASE):
callback(0.1, "Start to parse.")
with tempfile.NamedTemporaryFile(suffix='.vsdx', delete=True) as temp_file:
temp_file.write(binary)
temp_file.flush() # 确保数据写入文件
sections = VsdxParser()(temp_file,binary,
parser_config.get("chunk_token_num", 128),
parser_config.get("delimiter", "\n!?;。;!?"))
callback(0.8, "Finish parsing.")
三、file_utils.py
1、找到文件
/ragflow/api/utils/file_utils.py
文档解析在159行添加你的文件格式
音频解析在163行添加你的文件格式
图像解析在166行添加你的文件格式
2、重启容器
结束
附:行业词库添加
rag/res/huqie.txt
替换成自己的行业词库