Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >带有搜索条件的PDF文本提取

带有搜索条件的PDF文本提取
EN

Stack Overflow用户
提问于 2020-06-18 21:55:19
回答 1查看 315关注 0票数 0

我需要从PDF中提取文本,我有一个关键字列表,它告诉我我需要提取哪些文本部分。

PDF看起来如下所示:

  • Schema元素: Keyword1这是my关键字

  • Fontsize: 14我不需要这个

  • Guide以完成架构元素:文本文本。这是我需要的文本,可以在2到3行之间。甚至包含多个句子。

  • Schema元素: Keyword2这是my关键字

  • Fontsize: 18我不需要这个

  • Guide来完成模式元素:文本文本,这是我需要的文本,它可以在2到3行之间长。甚至包含多个句子。此文本与上面的文本不同。

到目前为止,这是我的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(pdftools)
library(pdfsearch)
library(tidyverse)
pdf <- pdf_text(dir(pattern = "*.pdf")) %>%
read_lines()
Keyword_list <- c("swDisproportionateCost", `"swDisproportionateCostOtherEULegislation", "swExemptionsTransboundary","swDisproportionateCostAlternativeFinancing","swDisproportionateCostAnalysis","swDisproportionateCostScale")`

然后我尝试使用keyword_search,但它只告诉我关键字在哪一行。

我想将草书中的文本提取为我的keyword_list中的一个新列。我认为可以用regex来完成,使用关键字和粗体中的文本作为开始和停止。

这是一个到pdf的链接。https://www.dropbox.com/s/kyyzr5wnh8z87if/FINAL%20Draft4_WFD_Reporting_Guidance_2022_resource_page.pdf?dl=0

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-22 05:14:30

这只是一个相当平淡无奇的文本提取工作。做这件事有很多种方法,而且我相信有比这更优雅的方法,但这个方法做的是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(pdftools)
library(dplyr)

keywords <- pdf_text("mypdf.pdf") %>%
strsplit("Schema element:") %>%
  lapply(function(x) x[-1]) %>%
  lapply(function(x) sapply(strsplit(x, "\r\n"), `[`, 1)) %>%
  unlist %>%
  trimws()

text <- pdf_text("mypdf.pdf") %>%
  strsplit("Guidance on completion of schema element:") %>%
  lapply(function(x) x[-1]) %>%
  lapply(function(x) sapply(strsplit(x, ":"), `[`, 1)) %>%
  lapply(function(x) sapply(strsplit(x, "\r\n"), 
                            function(y) paste(y[-length(y)], collapse = ""))) %>%
  unlist() %>%
  {gsub("  ", " ", .)} %>%
  trimws() %>%
  strsplit("Guidance on contents") %>%
  sapply(`[`, 1)

df <- tibble(keywords, text)

结果如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df
#> # A tibble: 15 x 2
#>    keywords                       text                                                   
#>    <chr>                          <chr>                                                  
#>  1 swExemption44Driver            "Required. Select from the enumeration list the driver~
#>  2 swExemption45Impact            "Required. Select from the enumeration list the impact~
#>  3 swExemption45Driver            "Required. Select from the enumeration list the driver~
#>  4 swDisproportionateCost         "Required. Indicate if disproportionate costs have bee~
#>  5 swDisproportionateCostScale    "Conditional. Select from the enumeration list the  sc~
#>  6 swDisproportionateCostAnalysis "Conditional. Select from the enumeration list the  an~
#>  7 swDisproportionateCostAlterna~ "Conditional. Select from the enumeration list the  al~
#>  8 swDisproportionateCostOtherEU~ "Conditional. Indicate whether the costs of basic  mea~
#>  9 swTechnicalInfeasibility       "Required. Report how ‘technical infeasibility’ has be~
#> 10 swNaturalConditions            "Required. Select from the enumeration list the  eleme~
#> 11 swExemption46                  "Required. Select from the enumeration list the reason~
#> 12 swExemption47                  "Required. Select from the enumeration list the  modif~
#> 13 swExemptionsTransboundary      "Required. Indicate whether the application of  exempt~
#> 14 swExemptionsReference          "Required. Provide references or hyperlinks to the  re~
#> 15 driversSWExemptionsReference   "Required. Provide references or hyperlinks to the  re~
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62464137

复制
相关文章
Python报错:TypeError: the JSON object must be str, bytes or bytearray, not ‘dict‘
当我尝试运行以下代码,来练习使用json.loads()和json.dumps()函数时,系统给我报出了这个错误。
JavaEdge
2021/02/23
3.1K0
前端json字符串转json对象_list对象转json
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/10
4.1K0
json字符串转成list集合_将json字符串转换成对象
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/08
1.7K0
springcloud 返回的数据为XML 而不是JSON
本人的原因是因为引入了jackson-dataformat-xml依赖导致的,下面查看自己项目是否包含此依赖,如果包含的话,可以去掉。 有的人添加了下面注解后可以解决,不过我这里没有解决。还是依靠上图
qubianzhong
2019/04/01
2.3K0
springcloud 返回的数据为XML 而不是JSON
java list 转json 字符串_fastjson将java list转为json字符串
1.直接用fastjson的静态方法string JSON.toJSONString(list)方法就行,JSON.toJSONString(list)将java list转为json字符串。
全栈程序员站长
2022/11/02
11.6K0
将单体应用重构为微服务
微服务重构概述 将单体应用程序转换为微服务的过程是应用程序现代化的一种形式。这是几十年来开发人员一直在做的事情。因此,在将应用程序重构为微服务时,有一些方法可以重用。 一个策略是不推荐“大面积”重写。那就是当您将所有的开发工作集中在从头开始构建新的基于微服务器的应用程序时。虽然听起来很吸引人,但它是非常危险的,可能会以失败告终。 您应该逐步重构单体应用程序,而不是大面积重写。您应该逐渐构建一个由微服务组成的新应用程序,并与您的单体应用程序一起运行。随着时间的推移,单体应用程序实现的功能量会缩小,直到它完全消
用户1263954
2018/01/30
1K0
将单体应用重构为微服务
js将json字符串转换成json对象_json对象转字符串
对象结构以”{”大括号开始,以”}”大括号结束。中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如代码
全栈程序员站长
2022/11/08
8.2K0
js如何将json字符串转成json对象_前端json字符串转json对象
JSON字符串: var str1 = ‘{ “name”: “cxh”, “sex”: “man” }’; JSON对象: var str2 = { “name”: “cxh”, “sex”: “man” };
全栈程序员站长
2022/11/08
9.4K0
java list对象转json_json转list对象集合
2.使用JSONArray json=JSONArray.fromobject(list);在调用json.toString()方法转换成字符串
全栈程序员站长
2022/11/07
3.1K0
Jackson将json字符串转换成List<JavaBean>
public final ObjectMapper mapper = new ObjectMapper(); public static void main(String[] args) throws Exception{ String jsonString = getJsonString(); //getConfig省略 //List<Config> configList = (List<Config>)jsonString //上面这样转换是错的,但是编
ydymz
2018/09/10
2.4K0
java中list对象和json字符串互转
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/02
8860
Python中list转成Json字符串
{ “0”: “123”, “2”: “34”, “3”: “456”, “1”: “345” }
全栈程序员站长
2022/11/02
1.9K0
Python3将API返回的bytes解码为str
如果将这种类型的字串直接存入到数据库的话,从数据库中读取出的字串进行操作会出现问题,比如上面的字串直接进行解析的话会直接报错,原因是str存着的实际上是一串没有解码的bytes。所以存入数据库时,要对bytes进行解码的操作。各位看官,详细操作请往下看。
十里桃花舞丶
2019/02/20
8420
java json对象和json字符串互转的方法_将json字符串转换成对象
这个json字符串中包含的数据可以转化为一个List<People>集合,代码如下:
全栈程序员站长
2022/11/09
1.9K0
python模块list 转json字符串_python 列表 字典转json[通俗易懂]
bJson = json.dumps(bItem, ensure_ascii=False)
全栈程序员站长
2022/11/02
4.6K0
Python3中文字符编码问题
最近在尝试 Python Web方面的开发尝试,框架使用的是Django,但是在读取数据库并页面展示的时候,出现了中文编码的问题。
小柒2012
2018/12/14
5.4K0
jackson简单使用,对象转json,json转对象,json转list
添加jackson依赖: // https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.8.2' // https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind
Ryan-Miao
2018/03/13
7.8K0
Python3.7中文字符编码问题
最近在尝试 Python Web方面的开发尝试,框架使用的是Django,但是在读取数据库并页面展示的时候,出现了中文编码的问题。
小柒2012
2019/12/05
1.7K0
js 将json字符串转换为json对象的方法解析
将json字符串转换为json对象的方法。在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键 例如: JSON字符串: var str1 = '{ "name": "cxh", "sex": "man" }'; JSON对象: var str2 = { "name": "cxh", "sex": "man" }; 一、JSON字符串转换为JSON对象 要使用上面的str1,必须使用下面的方法先转化为JSON对象:
小柒2012
2018/04/13
9.4K0
点击加载更多

相似问题

TypeError: JSON对象必须是字符串,而不是'bytes‘

30

TypeError: JSON对象必须是字符串,而不是“list”

10

JSON对象必须是str,而不是'list‘- TypeError

20

我为VM,TypeError收集铬: JSON对象必须是字符串,而不是'bytes‘

152

JSON对象必须是字符串,而不是'bytes‘

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文