一、文档解析器工厂架构1.1 解析器工厂映射表源码位置:rag/svr/task_executor.py:84-101FACTORY={"general":naive,# 通用解析器ParserType.NAIVE.value:naive,# Naive解析器(默认)ParserType.PAPER.value:paper,# 学术论文解析器ParserType.BOOK.value:book,# 书籍解析器ParserType.PRESENTATION.value:presentation,# 演示文稿解析器ParserType.MANUAL.value:manual,# 手册文档解析器ParserType.LAWS.value:laws,# 法律文档解析器ParserType.QA.value:qa,# 问答文档解析器ParserType.TABLE.value:table,# 表格文档解析器ParserType.RESUME.value:resume,# 简历解析器ParserType.PICTURE.value:picture,# 图片解析器ParserType.ONE.value:one,# 单页文档解析器ParserType.AUDIO.value:audio,# 音频解析器ParserType.EMAIL.value:email,# 邮件解析器ParserType.KG.value:naive,# 知识图谱解析器(使用naive)ParserType.TAG.value:tag# 标签解析器}解析器分类表:解析器类型适用文档特殊处理文件格式naive通用文档标准分块PDF、DOCX、TXT、HTMLpaper学术论文提取标题、作者、摘要PDFbook书籍层次化合并、目录移除PDF、DOCX、TXTmanual操作手册层级标题识别PDF、DOCXlaws法律文档条款编号识别PDF、DOCXqa问答文档QA配对提取PDF、DOCX、TXTtable表格文档表格优先解析PDF、EXCELresume简历结构化信息提取PDF、DOCXpresentation演示文稿Slide分块PPTX、PDFpicture图片文档OCR+图像理解PNG、JPGaudio音频文件语音转文本MP3、WAVemail邮件文档邮件结构解析EMLtag标签文档标签提取PDF、TXT解析器选择流程图:是否学术论文书籍简历表格其他文档上传识别文件类型用户指定parser_id?从FACTORY获取解析器自动推断parser_id文件类型判断paper解析器book解析器resume解析器table解析器naive解析器调用chunk函数返回chunks列表二、Paper学术论文解析器2.1 Pdf类继承关系源码位置:rag/app/paper.py:31-141classPdf(PdfParser):# 第31行:继承PdfParser基类def__init__(self):self.model_speciess=ParserType.PAPER.value# 第33行:指定为PAPER类型super().__init__()def__call__(self,filename,binary=None,from_page=0,to_page=100000,zoomin=3,callback=None):fromtimeitimportdefault_timerastimer# 第38-48行:OCR阶段start=timer()callback(msg="OCR started")self.__images__(filenameifnotbinaryelsebinary,zoomin,from_page,to_page,callback)callback(msg="OCR finished ({:.2f}s)".format(timer()-start))# 第50-53行:布局识别start=timer()self._layouts_rec(zoomin)callback(0.63,"Layout analysis ({:.2f}s)".format(timer()-start))# 第55-58行:表格分析start=timer()self._table_transformer_job(zoomin)callback(0.68,"Table anal
RAGFlow源码解析-9、文档解析器实现深度解析(第七周)
一、文档解析器工厂架构1.1 解析器工厂映射表源码位置:rag/svr/task_executor.py:84-101FACTORY={"general":naive,# 通用解析器ParserType.NAIVE.value:naive,# Naive解析器(默认)ParserType.PAPER.value:paper,# 学术论文解析器ParserType.BOOK.value:book,# 书籍解析器ParserType.PRESENTATION.value:presentation,# 演示文稿解析器ParserType.MANUAL.value:manual,# 手册文档解析器ParserType.LAWS.value:laws,# 法律文档解析器ParserType.QA.value:qa,# 问答文档解析器ParserType.TABLE.value:table,# 表格文档解析器ParserType.RESUME.value:resume,# 简历解析器ParserType.PICTURE.value:picture,# 图片解析器ParserType.ONE.value:one,# 单页文档解析器ParserType.AUDIO.value:audio,# 音频解析器ParserType.EMAIL.value:email,# 邮件解析器ParserType.KG.value:naive,# 知识图谱解析器(使用naive)ParserType.TAG.value:tag# 标签解析器}解析器分类表:解析器类型适用文档特殊处理文件格式naive通用文档标准分块PDF、DOCX、TXT、HTMLpaper学术论文提取标题、作者、摘要PDFbook书籍层次化合并、目录移除PDF、DOCX、TXTmanual操作手册层级标题识别PDF、DOCXlaws法律文档条款编号识别PDF、DOCXqa问答文档QA配对提取PDF、DOCX、TXTtable表格文档表格优先解析PDF、EXCELresume简历结构化信息提取PDF、DOCXpresentation演示文稿Slide分块PPTX、PDFpicture图片文档OCR+图像理解PNG、JPGaudio音频文件语音转文本MP3、WAVemail邮件文档邮件结构解析EMLtag标签文档标签提取PDF、TXT解析器选择流程图:是否学术论文书籍简历表格其他文档上传识别文件类型用户指定parser_id?从FACTORY获取解析器自动推断parser_id文件类型判断paper解析器book解析器resume解析器table解析器naive解析器调用chunk函数返回chunks列表二、Paper学术论文解析器2.1 Pdf类继承关系源码位置:rag/app/paper.py:31-141classPdf(PdfParser):# 第31行:继承PdfParser基类def__init__(self):self.model_speciess=ParserType.PAPER.value# 第33行:指定为PAPER类型super().__init__()def__call__(self,filename,binary=None,from_page=0,to_page=100000,zoomin=3,callback=None):fromtimeitimportdefault_timerastimer# 第38-48行:OCR阶段start=timer()callback(msg="OCR started")self.__images__(filenameifnotbinaryelsebinary,zoomin,from_page,to_page,callback)callback(msg="OCR finished ({:.2f}s)".format(timer()-start))# 第50-53行:布局识别start=timer()self._layouts_rec(zoomin)callback(0.63,"Layout analysis ({:.2f}s)".format(timer()-start))# 第55-58行:表格分析start=timer()self._table_transformer_job(zoomin)callback(0.68,"Table anal