如何在R语言中设置Tesseract的页面分割方法(PSM)参数
R语言tesseract包设置PSM参数优化表格识别的方法
R环境下的tesseract包支持直接通过options参数传递PSM配置,不需要额外适配,具体使用方式如下:
核心配置方法
PSM参数可以在创建tesseract识别引擎时指定,也可以在调用识别函数时临时传递,两种方式效果一致:
- 创建自定义识别引擎(适合多次调用同配置的场景):通过
tesseract()函数的options参数传入命名列表,键为psm,值为对应的参数数值 - 临时指定参数(适合单次识别场景):直接在
ocr()/ocr_data()函数的options参数中传入PSM配置即可
表格场景推荐PSM值
针对表格类文档,可优先测试以下PSM值,根据自己的文档排版选择效果最优的:
psm = 6:假设当前页面为单个统一的文本块,适合排版规整、单元格间隔小的单栏表格psm = 11:稀疏文本模式,不预设文本排版顺序,适合单元格分散、留白多的表格psm = 12:带页面方向检测的稀疏文本模式,适合扫描时存在轻微倾斜的表格文档
完整使用示例
# 加载所需依赖包 library(tesseract) library(pdftools) # 1. 先将扫描版PDF转为高分辨率图片,dpi建议设置300及以上 pdf_convert("目标扫描文档.pdf", dpi = 300, format = "png", output_prefix = "temp_pdf_page") # 2. 创建适配表格的识别引擎,指定PSM参数 table_ocr_engine <- tesseract( options = list( psm = 11, # 若识别中文文档可添加下方配置,需提前安装中文语言包 # lang = "chi_sim" ) ) # 3. 执行识别 # 纯文本识别结果 text_result <- ocr("temp_pdf_page_1.png", engine = table_ocr_engine) # 带坐标、置信度的结构化识别结果,方便后续提取表格内容 structured_result <- ocr_data("temp_pdf_page_1.png", engine = table_ocr_engine)
优化提示
如果调整PSM后识别效果仍不理想,可先对扫描图片做预处理:比如二值化、去除噪点、修正倾斜角度,再进行OCR识别,能进一步提升表格内容的识别准确率。
内容的提问来源于stack exchange,提问作者RKF
相关产品推荐
相关产品推荐

