使用Python正确解析PDF段落

2024-04-08

我正在创建一个 Python 脚本,该脚本应该从系统加载一堆 PDF 文件,进行一些数据分析并输出结果。数据分析的本质是,我必须按段落解析 PDF,并且对于每个段落,我必须迭代每个短语,检查是否满足某些条件。

我目前正在使用 Tika 进行解析。这就是我评估段落的方式。

这就是我当前正在做的事情,我正在加载内容,然后用唯一的字符串替换每个出现的一个或多个换行符。用空格替换每个常规换行符,用双换行符替换该唯一字符串。我这样做是为了更清楚哪个换行符分隔段落。然后我继续提取段落并返回没有重复的段落列表(蒂卡有时会重复内容)。

def getpdfcontent(path):
    pdf_content = extract_pdf(path)
    text = re.sub(r"\n{2,}", "<131313>", pdf_content['content'])
    text = text.replace("\n", " ")
    text = text.replace("<131313>", "\n\n")
    paragraphs = extractparagraphs(text.splitlines())
    return removeduplicates(paragraphs)

这就是我提取段落的方法。我检查当前行是否为空,当前段落中是否有内容,然后将其附加到列表中。

def extractparagraphs(lines):
    current = ""
    paragraphs = []
    for line in lines:
        if not line.strip():
            if current.strip():
                paragraphs.append(current)
                current = ""
            continue
        current += line.strip()
    return paragraphs

这就是我获得短语的方式,我可能会补充!?也到了分裂。

def getphrases(document):
    phrases = []
    phr = document.split(".")
    phrases.extend(phr)
    return phrases

现在我的首要任务是知道我是否可以改进解析? 如果没有,我可以做一些优化吗?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Python正确解析PDF段落 的相关文章

随机推荐

  • Google 地图 - 从 ROADMAP 中删除网格

    I m integrating the google map in my site It works fine However it shows grid like this 我想删除它以使地图更美观 任何人都知道如何删除它 Thanks
  • 如何使用 JPA CriteriaBuilder 查询执行外连接?

    我正在使用 JPA 2 0 Hibernate 4 1 0 Final 和 MySQL 5 5 27 我想构造一个 JPA 查询 每行返回两个实体 并且我想执行右外连接 这两个实体是 Entity Table name user uniqu
  • 无法从 Dropbox 检索图像

    你好 我有一个图像滑块 当我尝试从服务器检索图像时 图像会正确显示 http stthomasmountmtc org index html http stthomasmountmtc org index html 但是 当我尝试从 Dro
  • 我无法在 .NET MAUI 中显示带下划线的条目

    我曾在 Xamarin 平台工作过 现在正在学习 NET MAUI 尽管有很多相似之处 但我面临着某些问题 我无法按照 NET MAUI 文档声明的方式在 Android 设备上显示基本的输入控件 以下是输入字段的代码片段
  • C++ 和其他语言有小提琴类型的东西吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我记得曾经见过一个 jsfiddle 类型的东西 在线编译器 您可以在其中指定语言 c c asm 以及
  • 辅助阅读将列表视图中的项目显示为列表项 + 标题视图

    我正在自定义下拉刷新列表视图中实现可访问性 我的下拉刷新列表视图有一个标题视图 用于在下拉时显示更新状态 如果我的列表仅包含 5 个项目 Talkback 将其读取为 显示第 1 项 共 6 项 而不是 显示第 1 项 共 5 项 我认为总
  • 我们为什么使用 ViewModel?

    我最近开始担任网络开发人员 我使用 ASP NET MVC 4 和 NHibernate 在我的工作场所 我们严格要求使用视图模型在控制器和视图之间来回传输数据 并且视图模型不应包含模型的任何对象 我知道它是控制器和视图之间的一层 但我发现
  • 安卓。 Facebook 分享对话框在 Android 6.0+ 上立即关闭

    我正在尝试通过 Facebook 共享对话框共享图像 这是代码 private void startFacebookShare SharePhoto photo new SharePhoto Builder setBitmap getCap
  • IBOutlet 应该是 ivars 还是属性?

    尽管我确信它们存在 但我很难找到或确定在 ViewController 中声明出口的官方最佳实践 据我所知 有 3 个选项 仅伊瓦尔 仅限财产 由 ivar 支持的财产 当前 当我尝试通过从 IB 拖入 ViewController 来自动
  • 重新初始化 JQuery 有 XPage 部分刷新更新 DOM

    我有一个来自核心控件的选项卡式面板 里面是一个
  • Python FastAPI:返回的 gif 图像没有动画

    下面是我的 Python FastAPI 路由和 HTML 页面 Python app get status code 200 async def upload file file UploadFile File error img Ima
  • HTML5 / JavaScript:打开文本文件,加载到文本区域/将文本区域内容保存到文本文件

    我想在浏览器中做两件事 将文本文件加载到文本区域 必须通过对话框选择 将文本区域的内容保存到文本文件中 必须再次通过对话框选择 加载视频文件并获取文件路径以将其与视频播放器一起使用 1 http www longtailvideo com
  • Rails 2:当 id 1 不存在时,Model.find(1) 给出 ActiveRecord 错误

    我正在使用 Rails 2 3 5 如果我给出Model find 1 如果 1 不在数据库中 则返回 ActiveRecord 错误 是否应该回归nil正如以下情况Model find by column 这是预期的行为 我认为 Davi
  • 使用 JSON 字符串解析 URL 时捕获 IllegalArgumentException

    我需要使用 JSON 数据制定一个 url 如下所示 http someurl com passfail parameter http someurl com passfail parameter data1 123456789 data2
  • 将EhCache磁盘存储内容加载到内存中

    正如中所述EhCache文档 http ehcache org documentation get started storage options 在实践中 这意味着持久内存缓存将启动 其所有元素都在磁盘上 因此 Ehcache 设计不会在
  • 如何获得最大可能的精度? (Python - 十进制)

    我正在使用Decimal https docs python org 2 library decimal html用于需要精度的操作的类 我想使用 最大可能 的精度 我的意思是 程序运行的系统可以处理的精确度 要设置一定的精度很简单 imp
  • 在 Linq to Sql 中调用 InsertOnSubmit 时出现 NullReferenceException

    我尝试使用 LINQ to SQL 将新对象插入到数据库中 但当我在下面的代码片段中调用 InsertOnSubmit 时 出现 NullReferenceException 我传入一个名为 FileUploadAudit 的派生类 并设置
  • 移动 .git 目录

    我有一个在项目学习曲线早期创建的存储库 随着我了解更多 我意识到这会产生问题 因为我想要跟踪的一些文件在编译的源代码中并不需要 我想做的是创建一个新的 项目 父目录 将现有的源目录移动到该父目录中 并将不需要编译的文件迁移到该父目录中 用
  • 码头服务器配置

    我使用 Jetty 9 但配置有一些问题 我简单的 REST 效果很好 但是当我尝试向所有请求和错误处理程序添加新标头时 问题就开始了 我能够处理标头的唯一方法是将以下代码添加到每个响应中 return Response ok murals
  • 使用Python正确解析PDF段落

    我正在创建一个 Python 脚本 该脚本应该从系统加载一堆 PDF 文件 进行一些数据分析并输出结果 数据分析的本质是 我必须按段落解析 PDF 并且对于每个段落 我必须迭代每个短语 检查是否满足某些条件 我目前正在使用 Tika 进行解