PDF加粗内容重复读取解决方案

这篇具有很好参考价值的文章主要介绍了PDF加粗内容重复读取解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在使用pdfplumber读取PDF的过程中,由于加黑的内容会被莫名其妙的读取两次,带来了很大的困扰。这篇文章将给出解决方案。

发现问题

在在使用pdfplumber读取PDF的过程中,读取普通内容是完全没有问题的。但是该公司早期PDF并未完全规范的过程中,有些标题加粗了,而有些却没有。加粗的标题将会被读取两次,比如好好的123456,加粗后将会被读取为112233445566。这可不太好。

解决方案

问题分析

首先我们需要明白,加粗的内容只会被连续读取,而不会被随机读取,这一点使得字符串具备了一定的规律。所以循环或者递归都是可行的,只是我们需要记住递归的最大深度为1000

其次我们需要明确,不是所有的连续内容都应该被删除。比如111被读成了111111,那可不能删的只剩下1,这就又和PDF上想要传达的内容不一致了。所以正则表达式也是不能乱用的。

大致逻辑

既然有这些要求,我们就好办了。

我们考虑极端场景:111111。我们就直接先数一数连续重复有几个,然后保留一半就好了。

然后再考虑一般场景:111111222222333333。在处理过程中,实际上也就是相当于把字符串拆成了3份,每份利用极端场景111111的做法去做。

show my code

知道该怎么办了就直接干吧。

虽然我们现在是针对加粗被重复读取的问题,字符串中的每一种字符一定是双数出现,所以简单一点的话就可以这么做:

def drop_duplicates(arr):
  result, i = [], 0
  while i < len(arr):
    count = 1
    # 计算连续相同元素的数量
    while i + count < len(arr) and arr[i] == arr[i + count]:
      count += 1
    # 保留一半
    result.extend([arr[i]] * count // 2)
    i += count  # 处理下一段
  return ''.join(result)

当然,考虑到并不一定具备跟现在一样完全理想的场景,所以这里也考虑了万一真的有一个数字落单的情况:

def drop_duplicates(arr):
  result, i = [], 0
  while i < len(arr):
    count = 1
    # 计算连续相同元素的数量
    while i + count < len(arr) and arr[i] == arr[i + count]:
      count += 1
    # 只有一个落单的话,1 // 2 = 0,这就不对了,所以上个保险,最低只能为1
    result.extend([arr[i]] * max(1, count // 2))
    i += count  # 处理下一段
  return ''.join(result)

解决。文章来源地址https://www.toymoban.com/news/detail-835691.html

到了这里,关于PDF加粗内容重复读取解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 小程序按钮重复点击解决方案

    小程序是直面用户便捷的应用,而在用户使用时往往都会涉及到关键节点的按钮点击,例如,注册登录时,页面跳转时,发送验证码时,付钱还款,弹出提示等等。。。如果没有控制好按钮重复点击的问题,那么影响用户体验。当然有时候也会被同行吐槽,这人不行。。。

    2024年02月13日
    浏览(42)
  • Kafka数据重复问题解决方案

    通常,消息消费时候都会设置一定重试次数来避免网络波动造成的影响,同时带来副作用是可能出现消息重复。 幂等性指: 幂等性使用示例: 为了更好理解,需要了解下Kafka幂等机制 这种设计针对解决了两个问题: 那什么时候该使用幂等: 事务使用示例:分为生产端 和

    2024年02月07日
    浏览(53)
  • Python-pdfplumber读取PDF所有内容并自行提取指定内容

    🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:一晌小贪欢的博客主页 👍 该系列文章专栏:Python办公自动化专栏 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏 ❤️ 欢迎各位佬关注! ❤️ 最近接到一个需求

    2024年02月15日
    浏览(63)
  • python读取word/pdf文档,指定文字内容和图片

    任务要求: 将每页需要的内容读取出来放到不同的文件夹,找出含有指定内容的页面创建文件夹,然后把相关的内容和图片放进去。 pdf 读起来比较方便, 按页码读取文件:

    2024年02月12日
    浏览(66)
  • 【RabbitMQ | 第六篇】消息重复消费问题及解决方案

    什么是 消息重复消费 ?首先我们来看一下消息的传输流程。消息生产者–MQ–消息消费者;消息生产者发送消息到MQ服务器,MQ服务器存储消息,消息消费者监听MQ的消息,发现有消息就消费消息。 所以消息重复也就出现在 两个阶段 1 :生产者多发送了消息给MQ; 2 :MQ的一条

    2024年04月26日
    浏览(50)
  • Kafka重复消费以及消费线程安全关闭的解决方案

    Kafka消费程序每次重启都会出现重复消费的情况,考虑是在kill掉程序的时候,有部分消费完的数据没有提交offsect。 此处表明自动提交,即延迟提交(poll的时候会根据配置的自动提交时间间隔去进行检测并提交)。当kill掉程序的时候,可能消费完的数据还没有到达提交的时间

    2024年02月13日
    浏览(50)
  • python读取pdf、doc、docx、ppt、pptx文件内容

    使用python读取文件,其中pdf、docx、pptx可以直接读,.ppt和.doc文件不能直接读,需要转换成.pptx和.docx文件,并且需要区分系统 如果是linux系统,请先安装组件 python代码如下:

    2024年02月11日
    浏览(51)
  • 带你了解RabbitMQ:消息丢失、重复、积压的原因及其解决方案

    前言 首先说一点,企业中最常用的实际上既不是RocketMQ,也不是Kafka,而是RabbitMQ。 RocketMQ很强大,但主要是阿里推广自己的云产品而开源出来的一款消息队列,其实中小企业用RocketMQ的没有想象中那么多。 深层次的原因在于兔宝在中小企业普及更早,经受的考验也更久,很容

    2024年02月04日
    浏览(36)
  • AIGC 存储内容安全解决方案

    AIGC会帮助恶意份子更高效地炮制违法违规内容。 2022年,ChatGPT的推出,使 AIGC 这个名词进入了大众的视野。Stable Diffusion、MidJourney等可以生成图片的 AIGC 直接引爆了 AI 作画领域。Gartner 将生成性 AI 列为2022年五大影响力技术之一。 大量的 AIGC 在上线初期就面临关停风险,核心

    2024年02月09日
    浏览(53)
  • 批量合并PDF 文件的 5 大解决方案

    PDF 可以将一个、两个、三个甚至更多的记录封装在一起,以显示完整的信息和用于逻辑和交互式结构化的不同元素。由于 PDF 可以提出多层结构,因此当用户知道如何最大化这种格式时,将所有文件组织到其中非常有效。正如许多经验丰富的用户和 PDF 格式的用户一样,需要

    2024年01月21日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包