You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R的Tabulizer提取PDF表格转Data Frame遇行数量不一致问题求助

解决Tabulizer提取PDF表格转Data Frame的行数列数不匹配问题

核心思路

通过统一所有子列表的长度,用NA填充缺失部分,再转换为Data Frame,避免因行列数不一致报错。

具体步骤与代码

  1. 提取第二页的表格列表

    tables_page2 <- extract_tables(proform, pages = 2)
    
  2. 确定统一长度
    找到所有子列表中最长的元素个数,作为后续填充的目标长度:

    max_len <- max(sapply(tables_page2, length))
    
  3. 填充NA并转换为Data Frame
    遍历每个子列表,将其长度补至max_len(缺失位置用NA填充),再合并为Data Frame:

    # 填充NA至统一长度
    filled_tables <- lapply(tables_page2, function(x) {
      length(x) <- max_len
      x
    })
    # 转换为Data Frame
    df_page2 <- as.data.frame(do.call(cbind, filled_tables), stringsAsFactors = FALSE)
    

特殊情况处理

如果提取的子列表是行数据(每个子列表对应表格的一行,列数不一致),则调整为按行填充:

# 找到最多列数
max_cols <- max(sapply(tables_page2, length))
# 每行补NA至统一列数
filled_rows <- lapply(tables_page2, function(row) {
  c(row, rep(NA, max_cols - length(row)))
})
# 合并为Data Frame
df_page2 <- as.data.frame(do.call(rbind, filled_rows), stringsAsFactors = FALSE)

内容的提问来源于stack exchange,提问作者Humberto R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 21:13:10