如何在R中正确提取PDF文件全部表格并写入CSV,解决输出不完整问题
现有代码的问题点
- 你定义文件路径的行末尾多了冗余右括号,会先引发语法报错。
extract_tables()使用默认参数,对复杂年报表格的识别精度不足,容易截断边界单元格、漏识别跨页内容。- 写入时使用
out[i]取列表子集而非完整矩阵/数据框,且逐页append、关闭引号的设置,会导致单元格含逗号时错位,看起来像内容缺失。
解决方案
第一步:优化表格识别参数
把提取表格的代码替换为以下内容,适配年报类带边框的PDF表格:
library(tabulizer) # 删掉原路径末尾多余的右括号 location <- 'http://keic.mica-pps.net/wwwisis/ET_Annual_Reports/Religare_Enterprises_Ltd/RELIGARE-2017-2018.pdf' out <- extract_tables( location, method = "lattice", # 有明确边框的表格用该算法,无框表格可替换为"stream" output = "data.frame", # 直接输出结构化数据框,避免列表结构出错 pages = NULL, # 识别全页内容,避免漏页 guess = TRUE, # 自动定位表格位置 encoding = "UTF-8" # 避免特殊字符乱码丢失 )
第二步:修正写入逻辑,避免内容错位
不要逐页追加写入,先合并所有提取到的表格再统一输出:
# 合并所有表格 full_table <- do.call(rbind, out) # 统一写入CSV write.csv(full_table, file = "Output.csv", row.names = FALSE, na = "")
可选优化方案
如果调整参数后仍有内容缺失,可手动指定area参数框选每页表格的坐标范围,排除页脚、页眉等无关内容的干扰;也可以替换为Python的camelot库处理复杂PDF表格,识别精度更高。
内容的提问来源于stack exchange,提问作者Sri Priya
相关产品推荐
相关产品推荐

