layoutparser调用Detectron2LayoutModel报无对应属性AttributeError
layoutparser调用Detectron2LayoutModel触发属性不存在报错的解决方法 问题背景
正在开发PDF格式简历的信息提取项目,此前使用pdfminer等库提取文本时,常出现不同文本块的行内容重叠问题,文本提取结果准确性较差。因此计划先通过layoutparser完成文档版面检测,再基于识别到的独立文本块提取对应内容,使用的实现代码如下:
import layoutparser as lp import pytesseract pytesseract.pytesseract.tesseract_cmd ="C/Users/faty/Downloads/tesseract-ocr-w64-setup-v5.1.0.20220510.exe" poppler_path="C:/Users/faty/Downloads/Release-22.04.0-0/poppler-22.04.0/Library/bin" model = lp.Detectron2LayoutModel('lp://PubLayNet/mask_rcnn_X_101_32x8d_FPN_3x/config', extra_config=["MODEL.ROI_HEADS.SCORE_THRESH_TEST", 0.5], label_map={0: "Text", 1: "Title", 2: "List", 3:"Table",4:"Figure"}) layout_result = model.detect(img) lp.draw_box(img, layout_result, box_width=5, box_alpha=0.2, show_element_type=True)
运行上述代码时触发如下报错:
AttributeError: module layoutparser has no attribute Detectron2LayoutModel
报错产生原因
- 核心原因:
Detectron2LayoutModel是layoutparser基于detectron2框架实现的可选模型组件,不属于layoutparser主库的内置内容。仅安装layoutparser主包时不会自动安装detectron2相关依赖,也不会注册对应模型类,直接调用就会触发属性不存在的报错。 - 潜在配置问题:代码中tesseract的路径配置存在两处错误,即使修复模型调用问题,后续OCR环节也会报错:
- 盘符
C后缺少冒号,路径格式不符合Windows系统规范 - 配置的路径是tesseract的安装包文件,不是安装完成后目录下的
tesseract.exe可执行程序路径
- 盘符
修复方案
按以下步骤操作即可解决问题:
- 安装layoutparser的detectron2可选依赖,执行命令:
如果安装过程中出现detectron2编译失败的情况,需要先安装和本地PyTorch、CUDA版本匹配的预编译detectron2包,再执行上述命令pip install "layoutparser[detectron2]" - 修正tesseract路径配置:先运行已下载的tesseract安装包完成程序安装,再将
tesseract_cmd的值修改为安装目录下的tesseract.exe完整路径,注意补全盘符后的冒号,示例正确路径格式:pytesseract.pytesseract.tesseract_cmd = "C:/Program Files/Tesseract-OCR/tesseract.exe" - 完成上述修改后重新运行代码,即可正常加载版面检测模型完成推理。
内容的提问来源于stack exchange,提问作者Fatima Zahra
相关产品推荐
相关产品推荐

