RAG文档解析利器:Deepdoc

项目结构

Deepdoc是RAG框架RAGFLOW中使用的文档解析工具。

|--deepdoc
	|--parser
	    |--resume
	        |--entities
	 		|--step_one.py
	 		|--step_two.py
	    |--docx_parser.py
	    |--pdf_parser.py
	    |--excel_parser.py
	    |--html_parser.py
	    |--json_parser.py
	    |--markdown_parser.py
	    |--ppt_parser.py
	|--vision
	    |--layout_recoginzer.py
	    |--ocr.py
	    |--ocr.res
	    |--operators.py
	    |--postprocess.py
	    |--recoginzer.py
	    |--seeit.py
	    |--t_recoginzer.py
	    |--t_ocr.py
	    |--table_structure_recognizer.py

核心组件

  • OCR
  • 版面结构分析
  • 表格结构识别
  • 解析器

解析器

简历类型的处理

简历是完全没有规律的文档,一份简历可以分解为多个字段组成的结构化数据。因此需要做特殊处理,entities中定义了一些大学、公司、产业等信息,用于后续关键词提取;整个简历的处理过程分为两部进行:第一步先根据预先定义的关键词提取有效信息、接着再第二步再做一些合并以及过滤操作。

PDF文档的处理

PDF文档比较复杂,需要用到OCR模型,并且版面结构不同,内置了很多排序规则,另外还用到了XGB用于规则之外的补充。

经过实测,规则已经处理了绝大部分文本块的排序过程,XGB作用不大,并且通过特征重要性可以看到主要是坐标类型的特征起到了作用。

整个处理流程可以简化如下:
文档转图片->版面分析->表格识别->文字识别->合并段落->后处理

其他类型的处理

每一种类型的文档都有一个对应的解析器,基本都是用现成的库进行处理的。

视觉信息处理

版面结构识别

不同类型的文件具有不同的布局,对于论文来说,会包含较多的图表、甚至还会有公式,因此只有当准确识别出文件的类型和布局才能有效处理该文档。版面结构定义了以下10种类别,用于区分不同的内容:

  • 文本
  • 标题
  • 配图
  • 配图标题
  • 表格
  • 表格标题
  • 页头
  • 页尾
  • 参考引用
  • 公式

执行命令:

python deepdoc/vision/t_recognizer.py --inputs=path_to_images_or_pdfs --threshold=0.2 --mode=layout --output_dir=path_to_store_result

表格结构识别

表的结构可能非常复杂,比如多层次结构标题、跨单元格以及行列结构不统一等。表结构识别针对表格内容定义了5种类别:

  • 列标题
  • 行标题
  • 合并单元格

执行命令:

python deepdoc/vision/t_recognizer.py --inputs=path_to_images_or_pdfs --threshold=0.2 --mode=tsr --output_dir=path_to_store_result

与版面结构分析不同,表格结构识别只会把可能是表格的区域识别出来

posted @ 2024-07-29 22:53  深度学习机器  阅读(387)  评论(0编辑  收藏  举报