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

tabulapdf::extract_tables()工作目录错误原因及解决问询

问题:tabulapdf::extract_tables()提取表格成功但报工作目录相关错误

PDF文件及对应目录均存在,调用tabulapdf::extract_tables()能成功提取表格,但返回与工作目录相关的错误,疑似和返回列表的第三个对象有关,需明确错误成因并获取解决建议。

相关代码及输出

x <- list.files(full.names = TRUE)[1]
file.exists(x)
# [1] TRUE

extract_tables(x, method = "decide")

# Error : 'TOTAL PAYABLE  75,564.00   10,578.96   86,142.95' does not exist in current working directory ('C:/Users/franc/OneDrive/Documents/Friar Tuck').                                    
# [[1]]                                                                                                                                                                                  
# # A tibble: 6 × 8
#   QTY   ITEM         `KG/ITEM` `R/ITEM` `R/KG`  EXCL   VAT  INCL
#   <chr> <chr>            <dbl>    <dbl>  <dbl> <dbl> <dbl> <dbl>
# 1 2     COW : BLACK        438     8500   19.4 17000  2380 19380
# 2 4     COW : BLK          481     9300   19.3 37200  5208 42408
# 3 1     COW : BLK          455     9400   20.7  9400  1316 10716
# 4 1     HEIFER : BLK       385     8800   22.9  8800  1232 10032
# 5 1     COW : RED          380     8750   23.0  8750  1225  9975
# 6 9+0   NA                4020       NA   NA   81150 11361 92511
# 
# [[2]]
# # A tibble: 5 × 5
#   `AAM COMMISSION` `5.00%`        `4,057.50` `568.05` `4,625.55`
#   <chr>            <chr>               <dbl>    <dbl>      <dbl>
# 1 RMLA             Statutory Levy       51.0     7.14       58.2
# 2 RPO              0.15%               122.     17.0       139. 
# 3 FARMERS ASSOC    HDLA :: 0.5%m       406.     56.8       463. 
# 4 TRANSPORT        FRYSLAN             950     133        1083  
# 5 TOTAL DEDUCTIONS NA                 5586.    782.       6368. 
# 
# [[3]]
# [1] "TOTAL PAYABLE\t75,564.00\t10,578.96\t86,142.95"
# 
# [[4]]
# # A tibble: 3 × 7
#   `CATEGORY SUMMARY`   QTY `R/KG` `TOTAL KG` `KG/ITEM` TOTAL `R/ITEM`
#   <chr>              <dbl>  <dbl>      <dbl>     <dbl> <dbl>    <dbl>
# 1 COW                    8   19.9       3635       454 72350    9044.
# 2 HEIFER                 1   22.9        385       385  8800    8800 
# 3 TOTAL                  9   20.2       4020       447 81150    9017.

错误成因

  • extract_tables()的method = "decide"参数会自动判断表格类型,当遇到第三个对象这种纯文本行(非标准表格结构)时,内部逻辑误将该文本内容当作文件路径进行存在性检查,从而抛出工作目录相关错误。
  • 第三个返回对象是带制表符的纯文本字符串,并非规整的表格,函数的自动识别逻辑出现偏差,错误触发了文件路径验证流程。

解决建议

  • 指定提取方法:放弃自动判断,手动选择适合的提取方法。如果PDF中的表格是规整的格子式,使用method = "lattice";如果是流式文本排版的表格,使用method = "stream",避免误识别。示例代码:
    extract_tables(x, method = "lattice")
    
  • 捕获错误并过滤无效内容:用tryCatch()包裹函数调用,提取结果后手动过滤掉纯文本类型的元素,只保留表格对象:
    result <- tryCatch(extract_tables(x, method = "decide"), error = function(e) NULL)
    valid_tables <- result[sapply(result, is_tibble)]
    
  • 预处理PDF:如果PDF中存在这类干扰性的纯文本行,可先用PDF编辑工具移除该部分内容后再进行表格提取,从源头避免识别错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 22:26:01