【问题标题】:Python - Split pdf or powerpoint by pixel location?Python - 按像素位置拆分 pdf 或 powerpoint?
【发布时间】:2020-04-28 10:56:12
【问题描述】:

我将首先解释我的困境:我有数千个 powerpoint 文件 (.ppt) 需要提取文本。问题是文件中的文本是杂乱无章的,当作为一个完整的页面阅读时,它对我需要的内容没有意义(在示例中它会读取:第 1 行、第 3 行、第 2 行、第 4 行、第 5 行)。

我最初使用tika 来读取文件。然后我想如果我使用globwin32com.client 转换为pdf,我会有更好的运气,但结果基本相同。这里的图片是文字的一个例子。

所以现在我的想法是,如果我可以按像素位置划分 pdf 或 ppt(并在需要时保存到单独的临时文件中,打开并以这种方式阅读),我可以让事情井井有条并得到我需要的东西。尽管文本在每个框中移动,但黑色轮廓框始终大致位于同一位置。

我找不到任何东西可以拆分单个 pdf 页面,只能将多个页面拆分为一个页面。有谁知道该怎么做?

我需要一起阅读第一个框中的文本(第 1 行和第 2 行)并加载到字典或其他容器中,第二个框也是如此。作为参考,PowerPoint 中只有一张幻灯片。

【问题讨论】:

  • 这些是旧格式的.ppt 文件(2007 年之前)还是.pptx 文件?
  • 他们老了,都是.ppt 作为参考,我一直在用我上面建议的方法取得进展。首先pptpdf 使用win32com,第二个pdfjpg 使用pdf2image,使用PIL 裁剪到我需要的帧位置,最后使用pytesseract 读取图像。不是最漂亮的,也不是完美的,但如果我明天稍微按摩一下图像,它可能会有所帮助。仅供参考,描述中的屏幕截图是我正在使用的非常简化的版本,这也是阅读文本很困难的部分原因
  • 啊,我明白了。我会删除我的答案,因为它对你没有任何帮助:)

标签: python pdf powerpoint text-extraction


【解决方案1】:

请允许我提供答案作为一般准则: .ppt 和 .pptx 文件都是美化的 .zip 文件。 使用 7-zip 或 WinZip 打开 .pptx 并了解其结构。 将它们转换为 .pptx 文件。 现在,每张幻灯片都应该有一个 .xml 文件,其中包含您可以解析的标签。 例如,您会找到每个文本框的标签,其中嵌套了该框文本的标签。

还有:python-pptx

通过调整此 VBA 代码进行大规模转换:Link for VBA

或使用 PowerShell:Link for [PowerShell]

【讨论】:

  • 我理解你的意思,感谢你对 .xml 文件的解释。但是这种方法不起作用,.xml 文件与真实文件一样杂乱无章。让我更清楚一点,文本周围的黑框并不相同,每个元素都是独立的,文件中没有任何东西将它们链接在一起。文本不在黑匣子内,它们只是简单地叠加起来,看起来就像它们一样。
  • 我做了一个和你图片类似的测试文件。 xml 组织良好。文本框中的文本用<a:t> 标记,x & y 位置用<a:off> 标记(可能是偏移)。这两个标签都在<p:sp> 标签内。所以你有文字和位置。
  • 好的,我喜欢这个。我的架构设置有点不同,但我看到你在看什么。那可以工作。我看到的问题是我有数千个这样的文件。做一些谷歌搜索我找不到将ppt 转换为pptx 的库,无法手动执行此步骤
  • 添加了两个批量转换选项。
猜你喜欢
  • 2015-01-23
  • 2017-02-13
  • 1970-01-01
  • 2018-03-27
  • 1970-01-01
  • 2014-03-25
  • 2011-02-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多