首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >解析python中的PDF形状数据

解析python中的PDF形状数据
EN

Stack Overflow用户
提问于 2022-02-02 00:23:44
回答 1查看 485关注 0票数 2

我试图把一个脚本,以修复PDF大量的PDF已经从Autocad通过他们的DWG2PDF打印驱动程序导出。

当使用此驱动程序时,所有SHX字体都被呈现为形状数据,而不是文本数据,但是,它们确实有一个注释插入到PDF中,在预期的位置使用预期的文本。

到目前为止,在我的脚本中,我已经让它在PDF中运行,并在每个部分的顶部插入隐藏的文本,文本压缩到评论的大小,这给了我90%的方法,给了我一个可搜索的文档。

遗憾的是,注释区域的大小是相对的(基于整数的),这使得很难准确地确定短文本的方向,导致文本周围大小不均匀的框。

我想要做的是解析PDF中的形状数据,在注释范围内收集任何信息,然后确定一个更小、更精确的边框。然而,我所能找到的所有信息都是那些试图通过文本数据进行解析的人,而我在形状数据方面根本找不到任何东西。

下面的图像是PDF中原始文本的示例,第二个图像以蓝色显示注释边框,红色文本是我设置的隐藏内容,以使文档可搜索,并可复制/粘贴。我可以通过将框缩小一个固定的边距来得到更好的效果,但是对于小的文本项,注释框的低分辨率坐标数据会把事情搞砸。

为了达到这一目的,我使用了PyPDF2和reportlab的组合,但是可以迁移到不同的库中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-02 23:44:17

最后,我没有用PyPDF2找到解决方案,我找到了一种在pdfminer.six中迭代形状数据的简单方法,但是在pdfminer中找不到一种提取注释数据的好方法。

因此,我使用一个库获取注释,一个用于查看形状数据,最后使用第三个库在新的pdf上添加隐藏文本。随着工作表复杂性的增加,它运行得非常慢,但是给我足够好的结果,请参见下面的图像,其中注释中的粗绿色边框缩小到文本周围的蓝色边框。当然,我不会划定边界,使用不可见的文本作为实际的程序输出,给出相当好的可选择/可搜索的文本。

如果有人对PDF中的形状数据循环感兴趣,那么下面的片段应该可以帮助您开始工作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from pdfminer.high_level import extract_pages
from pdfminer.layout import LTLine, LTCurve

for page_layout in extract_pages("TestSchem.pdf"):
    for element in page_layout:
        if isinstance(element, LTCurve) or isinstance(element, LTLine):
            print(element.bbox)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70952416

复制
相关文章
响应json数据之发送ajax的请求
一、前端异步请求代码: <span style="font-size:14px;">$.ajax ({ type: "POST", //请求的方式 url: "outputservlet3", //请求url data: {}, //前端向后端传送的数据 dataType: "json", //数据格式json error: function () //请求错误的回调函数 { }, success: function () //请求成功的回调函数 { } })</span> 二、WEB-INF下的w
阮键
2019/12/25
4.7K0
Actframework中如何灵活控制JSON响应
@DiamondFsd 昨天写了一篇关于如何在Spring MVC中灵活控制JSON返回的博客,其中@JSON注解的思路和我在actframework的处理方式非常相似。 刚好昨天把actframework放上码云了,就这个话题写下 如何在ActFramework中控制JSON返回 首先是资源和服务。我将就@DiamondFsd的article的例子来做讲解 @Entity("article") public class Article extends MorphiaAdaptiveRecord<Artic
老码农
2018/06/27
9550
如何从网络发送文本
如果您想从您的网络平台发送文本,那么您可以在下面看到我们的流程。 最新的邮件数据库从您的网络平台为您提供任何类型的文本发送服务。 如果您想从您的 wordpress 或 php 或 html 网站发送文本,那么您应该从该网站了解它。
最新邮件数据库
2022/05/25
8510
HttpClient 发送Json
import com.fasterxml.jackson.databind.ObjectMapper; import msxf.model.People; import msxf.until.ImpalaJdbc; import msxf.until.NowDate; import org.apache.commons.configuration.PropertiesConfiguration; import org.apache.http.HttpS
shengjk1
2018/10/24
2.3K0
postman 发送json请求
Tags: 工具 Archives QR Code
简单、
2018/07/17
1.4K0
用于从 JSON 响应中提取单个值的 Python 程序
值提取是一个非常流行的编程概念,它用于各种操作。但是,从 JSON 响应中提取值是一个完全不同的概念。它帮助我们构建逻辑并在复杂数据集中定位特定值。本文将介绍可用于从 JSON 响应中提取单个值的各种方法。在开始值提取之前,让我们重点了解 JSON 响应的含义。
很酷的站长
2023/08/11
2110
用于从 JSON 响应中提取单个值的 Python 程序
@ResponseBody响应JSON 406
搭建SpringMVC(4.1),但是搭建完成以后发现使用@ResponseBody的ajax无法访问,总是出现406的问题。 首先怀疑的是配置问题,经过查明,影响SpringMVC的@ResponseBody注解的是:         <mvc:annotation-driven />,我发现我的配置中存在这个注解。同时又使用Spring文档中的自动配置相关解析类的方式再进行测试,发现还是没有解决问题。 同时在网上找到相关问题,发现是缺失jackson的jar。 <dependency>         
冷冷
2018/02/08
1.1K0
如何用GET的方式来发送json数据
curl -XGET 'http://192.168.5.182:9200/ecommerce/product/_search' -d' > { > "query":{ > "match_all":{} > } > }'
算法之名
2019/08/20
3.5K0
获取响应头与发送头
回复@TiAmo玲 1、获取请求头 想要获取请求头,就需要会用抓包工具,目前比较普遍的就是fiddler。大家可以在百度搜索下载。首先我们打开fiddler 你会发现左侧这里不停地增加,这里看到的就是
孟船长
2018/05/18
2K0
SpringMVC ResponseBody响应json数据
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
多凡
2019/11/01
8290
通过SpringMVC框架响应JSON数据
在SpringMVC框架(含SpringBoot框架)中,当处理请求的方法之前添加了@ResponseBody后,或在控制器类之前使用的是@RestController,处理请求的方法的返回值将作为响应到客户端的数据。
海拥
2021/08/23
1.2K0
Spring Boot API 的 Controller 如何获得发送的 JSON 数据
通常我们都会使用 POST 方法,在实际编程的时候我们应该如何获得发送的 JSON 数据呢?
HoneyMoose
2021/01/27
1.7K0
Spring Boot API 的 Controller 如何获得发送的 JSON 数据
PHP发送和接收JSON请求
现在微服务中,很多API由于需要传递的参数较多所以要求用包含所有参数的JSON数据作为POST请求的请求体来替代FormData传递参数的方式,在参数量较多时POST JSON要比POST FormData便于开发和测试,今天我们就来看一下在PHP中如何发送和接受JOSN POST,以及在Laravel框架中针对JSON Request提供的访问JSON请求数据的便捷方法。
KevinYan
2019/10/13
8.1K0
内核的“信号处理”——发送与响应
信号处理是写任何服务程序都逃避不了的问题。比如写TCP服务程序,一般都要将SIGPIPE设置为SIG_IGN。—— 当TCP连接由内核判定为已“中断”或者说“断连”,而应用层还在尝试往这个连接对应的套接字写入数据时,就会产生SIGPIPE信号。如果应用程序没有注册过SIGPIPE信号处理函数,内核则会执行SIGPIPE的默认处理即终止当前进程。但是对于TCP服务来说,出现这种情况是属于正常范围内(譬如对端直接RST了连接),所以服务程序应该直接设置忽略SIGPIPE。
glinuxer
2019/04/10
1.9K0
内核的“信号处理”——发送与响应
使用python通过http发送json
因为需要通过http协议向服务器post一些数据,于是用python写了一个相关小程序,没想到遇到了一些问题,于是就在这里将这个问题记录一下。
py3study
2020/01/13
3K0
httpclient post发送json数组并解决json乱码问题
业务: 客户端发送json数据,服务端进行解析 client发送json格式: {"data":[{"name":"1;,a","id_no":"222,a","cellphone":"123141a","abode_detail":"213,a","emp_add":"werew3a","app_no":"111111111111a","create_time":"11a"},{"name":"张三","id_no":"null","cellphone":"null","abode_detai
shengjk1
2018/10/24
4.2K0
Go Web编程--解析JSON请求和生成JSON响应
现在无论是网站、App、小程序还是移动端H5页面应用,都是采用前端与后端单独部署,相互之间以API接口交互的形式构建而成的。因为在结合可读性、编码数据大小和开发者使用难度上都JSON格式是一个比较好的选择,所以接口的数据格式通常都采用JSON,即前端在发送POST,PUT,PATCH请求添加,更改数据时会把数据以JSON格式放到请求的Body中。而后端则是所有数据都会以JSON格式返回。
KevinYan
2020/04/08
3.8K0
委托协议栈发送接受数据响应
上一篇文章说过网络收发功能是委托操作系统实现的,这里的委托就是指委托操作系统的协议栈,和DNS查询一样,建立连接和通信上层也需要使用到 Socket的,Socket用于提供计算机之间连接通信的管道,大致示意图如下所示:
小柔
2022/10/09
6010
委托协议栈发送接受数据响应
点击加载更多

相似问题

Spring :如何修改从控制器发送的json响应

22

如何从我的弹簧控制器发送json响应?

22

从Spring控制器方法发送Json响应的最佳实践

33

如何从.ashx发送JSON响应上传onUploadSuccess

11

无法从WebFilter发送json响应

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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