问题标签 [pdftools]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6596 浏览

r - 使用 R 从两列 PDF 中提取文本

我有很多两列格式的PDF。我正在使用pdftoolsR 中的包。有没有办法根据两列格式读取每个 PDF 而无需单独裁剪每个 PDF?

每个 PDF 都包含可选择的文本,该pdf_text功能读取文本没有问题,唯一的问题是它会读取第一列的第一行,然后继续到下一列,而不是向下移动第一列。

非常感谢您的帮助。

0 投票
1 回答
1979 浏览

r - PDF 转换为 CSV R

我正在尝试将以下 PDF 加载到 R 中,并将表格转换为 CSV 文件。

我已经尝试了 library(pdftools) 和 library(tabulizer),并且我花了一个下午浏览各种论坛,但我似乎没有找到适合我的答案。我可以使用以下代码将 PDF 加载到 R

它上传得很好,但它根本不是我可以使用的表格。

这是PDF文件的链接:

http://vege1.kan.ynu.ac.jp/traits/PlantTraitAsia.pdf

我只想将表格上传到 R 中,保留标题,并能够将其导出到 TXT、CSV 或 XLS 文件。

谢谢你的帮助

0 投票
0 回答
126 浏览

r - 在 R 中从 PDF 中读取表格

我有一个包含许多表格的 PDF,我正在尝试使用 R 将它们解析为更易读的格式。到目前为止,我尝试了两种方法:

  1. 用于pdftools::pdftext()获取文本,然后基本上使用正则表达式手动读取表格(老实说并没有听起来那么糟糕)
  2. using tabulizer::extract_tables(),它以某种方式神奇地为我完成了所有工作(它有点慢但可以忍受)

这两种方法都出奇的好,但仍然存在一些与弄乱列/对齐有关的问题——有时列被合并,有时标题与数据列未对齐,等等。我愿意蛮力争吵数据,但是在我尝试之前,我只是想看看是否有更聪明的方法来做到这一点。

那么,有没有更好的方法从 PDF 中读取表格?

0 投票
2 回答
162 浏览

r - pdf_text 函数不释放内存(在 Windows 上)

pdf_text()没有释放 RAM。每次运行该函数时,它都会使用更多 RAM,并且在 R 会话终止之前不会释放它。我在窗户上。

最小的例子

我的问题

为什么要pdf_text()使用这么多内存,如何释放它?(无需终止 R 会话)

到目前为止我尝试过的

gc()在循环内尝试过

我已经检查过pdf_text()没有创建一些隐藏的对象(通过检查ls(all=TRUE)

我已经清除了 R 会话的临时文件

另请注意

尽管上面示例中特定 pdf 的大小约为 5mb,但调用pdf_text它会使用大约 20 倍的内存!我不知道为什么

0 投票
1 回答
104 浏览

r - 如何使用带有pdftools和html链接的自定义函数在R中一次将大量列突变到数据框中?

抱歉,如果这很长或结构不正确,这是我的第一个问题和第一个主要的 R 侧项目!让我知道我是否应该为将来更改有关我的问题的任何内容。

我目前正在处理一些存储相当奇怪的城市交通数据。不是将每个交叉口的数据存储在可下载的 csv 文件中,而是提供一个指向网站的链接,该链接包含指向所有以前交通调查的 HTML 链接的 PDF 格式。

我已经为每个交通路口提取了最新的 PDF,但是无法让我的函数读取 PDF 并在输入到 mapply 和 mutate 时返回数据以工作。我之前编写了一个函数,该函数能够以 PDF 格式和 PDF 链接作为输入,并返回一个 1 行 55 列的数据框,其中包含该路口的所有交通数据。

现在,我似乎无法让该函数在 mapply/with mutate 中工作。该函数如下所示,但它需要两个输入,即用于 PDF 的调查类型和指向相关 PDF 的 PDF 链接,并返回上述数据框。

当简单地单独使用mapply时,我认为该函数将整个调查类型列/整个PDF链接列作为一个整体用于函数中的变量,而不是循环遍历整个列。

在 mutate 中使用 mapply 时,它似乎在两列上正确循环,但我不确定如何使用 mutate 一次正确添加大量列。理想情况下,我会简单地以正确的顺序制作列名的向量,并使用 mutate 或一些类似 mutate 的函数将 mapply 的结果分配给列列表,即

类似变异(traffic_westwood,col-names = mapply(get_data,SURVEY_TYPE,PDF))

因此,我有两个问题:

  1. mapply 如何与我下面的代码相关?我是否误解了 mapply 如何在两列上循环,或者我的函数没有正确矢量化?我是否应该为此任务使用与 mapply 不同的循环函数?

  2. 是否有一个函数可以用来分配循环遍历感兴趣的两列并将 PDF 数据提取到列名列表中的结果,然后将这些列添加到我的数据框中?

以前,我尝试将 mapply 调用放入 mutate 中,如上所述,但它仍然需要一种将 55 列分配给名称列表的方法。

此外,当我意识到循环遍历我需要的两列而不是尝试在整行上执行我的自定义函数时,我切换到了 mapply 而不是 lapply。

另请注意,在 mapply 调用中使用的 SURVEY_TYPE 列和 PDF 列都是正确的维度,每个插槽中都有可接受的值:我已经检查过了。

请注意,我的代码理想情况下适用于包含以下两列 SURVEY_TYPE 和 PDF 的任何维度的任何输入有限数据框。SURVEY_TYPE 包含“Auto”以指示自动调查类型和“Manual”以指示手动调查类型。PDF 包含 SURVEY_TYPE = 'Auto' 的行的字符串向量/PDF html 链接,如果 SURVEY_TYPE = 'Manual' 则包含单个字符串/PDF html 链接。

有关 LA 市手动交通调查 PDF 链接的示例,请检查下面打印的已关闭连接的错误消息,其中应包含多个此类链接。

理想情况下,我想直接将 55 行填写的信息附加到当前数据框中。当然,作为中间步骤,如果有必要,我可以获取一个包含行的新数据框并将其附加到旧数据框。

当我将 mapply 调用保留在上面最后一行的 mutate 调用之外时,会出现以下错误消息(对我来说,它似乎无法告诉列是向量并且首先检查 SURVEY_TYPE == 'Auto'在列的第一个组件上而不是按元素):

当我如代码所示在 mutate 中调用 mapply 并尝试将调用分配给单个变量时,乍一看,我相信它不能将整个结果行分配给单个列条目。因此,我的问题是如何使用 mutate 中的任意自定义函数或类似 mutate 的函数将大量列分配给名称列表:

0 投票
0 回答
103 浏览

r - 使用 R 将数据从 PDF 提取到 CSV

我正在使用此代码从我的 PDF 中提取数据:

但这使用行尾来分隔 PDF。我想在每一段之后分开。我可以使用任何其他拆分功能来获取数据段落吗?

0 投票
0 回答
54 浏览

r - 下标越界。提取 PDF

我正在从 pdf 中提取文本。删除标点符号并查看重复的关键单词以及它们出现的频率。

我目前收到一个错误:

(opinions.tdm, 1:10, )中的错误[.simple_triplet_matrix:下标越界

opinions.tdm的有以下特点:

opinion.tdm 列表长度为 6。nrow 整数 [1]。ncol [1]。暗名列表 [2]。属性 [3]

0 投票
1 回答
512 浏览

r - 根据以 ocr'd 图像结尾的段落将字符串拆分为列

我正在做一个项目,将打字机写的战争日记笔记从 PDF 扫描转换为文本。我可以成功(可能 90% 使用原始非调整大小的文件)提取我首先裁剪的主要文本。

Reprex 数据:您可以从图像开始尝试,或者使用我在下面提供的文本。

我的挑战是保持文本的“每日”结构,它有 7 个段落或部分,每天一个,并且用“\n”或“\n\n”分割并不完全正确。

在此处输入图像描述

我在项目中使用了 pdftools/stringr/tesseract/magick 的组合:

使用:

给出一个字符串:

使用stringr,这可以通过句子结尾大致拆分:

有什么想法可以改进它以在每个结尾找到特定的模式吗?

我可能只是导出拆分的原样并从此处以 word 手动复制/粘贴。

非常感谢!!

0 投票
2 回答
139 浏览

r - 使用 R 同时从多个 PDF 中提取多个短语

我在一个表中有一个 pdf 路径列表,我正在尝试对列出的其余 pdf 重复以下命令。基本上我只是将pdf文件转换为文件第一页的文本,然后使用keyword_search命令对该页面中的某些短语进行搜索。我可以一次成功完成一个文件,但我有 281 个文件。我错过了什么??

一个 PDF 文件

多个 PDF 文件:尝试失败

这是我收到的错误消息:

0 投票
1 回答
771 浏览

r - 尝试从包含 70 个 pdf 文件的目录中的每个 pdf 中提取页面子集

我正在使用 tidyverse、tidytext 和 pdftools。我想在 70 个 pdf 文件的目录中解析单词。我正在使用这些工具成功地做到这一点,但下面的代码抓取了所有页面而不是我想要的子集。我需要跳过前两页,然后为每个 pdf 选择第 3 页到文件末尾。

我发现通过将 [3:12] 放在这样的括号中,我可以获取第 3-12 个文档:

这不是我想要的。如何使用 [3:12] 规范从每个 pdf 文件中提取我想要的页面?