如何解决R语言tabulizer包extract_tables报错no lines available in input问题
报错排查与解决方法
校验坐标适配性
你当前硬编码的area参数(c(172.1,77.5,693,536))仅适配第一个PDF的页面布局,其余两个PDF的页面尺寸、表格位置、页边距存在差异时,你指定的区域内没有可识别的表格内容就会触发报错,且你设置了guess = FALSE,函数不会自动识别表格位置。
可先通过tabulizer::locate_areas()函数手动框选对应PDF的表格区域,拿到适配的坐标后再传入area参数,也可临时将guess改为TRUE测试能否正常识别表格。排查PDF本身属性
确认报错的两个PDF不是扫描版/图片版PDF,tabulizer依赖PDF的可编辑文本层解析内容,若为图片生成的扫描版PDF,没有可提取的文本内容也会触发该报错。可手动尝试从PDF中复制文本,若无法复制则为扫描版,需先做OCR识别后再解析表格。调整参数增强容错
可新增encoding参数指定PDF文本编码,非英文PDF编码不匹配会导致文本识别失败,例如可传入encoding = "UTF-8"适配多语言场景。也可先去掉output = "data.frame"参数,先以列表格式接收解析结果,确认有内容后再转换为数据框,参考调整代码:
# area替换为对应PDF适配的坐标 agri_table_list <- extract_tables("目标PDF文件名.pdf", pages = 1, area = list(c(上坐标,左坐标,下坐标,右坐标)), guess = FALSE, encoding = "UTF-8") # 验证解析结果后转换为数据框 if(length(agri_table_list) > 0) { agri_table <- as.data.frame(agri_table_list[[1]]) }
- 校验页面参数设置
确认两个报错PDF的目标表格确实位于第1页,部分PDF的封面、扉页会占用第一页,实际表格在后续页面,可临时删除pages参数测试全页解析是否能拿到有效内容。
内容的提问来源于stack exchange,提问作者Ali Inayat
相关产品推荐
相关产品推荐

