下面是一个复制粘贴就绪的示例,它列出了PDF中每个文本块的左上角,我认为对于任何不包含包含包含文本的“Form XObjects”的PDF,它都应该适用:from pdfminer.layout import LAParams, LTTextBox

from pdfminer.pdfpage import PDFPage

from pdfminer.pdfinterp import PDFResourceManager

from pdfminer.pdfinterp import PDFPageInterpreter

from pdfminer.converter import PDFPageAggregator

fp = open('yourpdf.pdf', 'rb')

rsrcmgr = PDFResourceManager()

laparams = LAParams()

device = PDFPageAggregator(rsrcmgr, laparams=laparams)

interpreter = PDFPageInterpreter(rsrcmgr, device)

pages = PDFPage.get_pages(fp)

for page in pages:

print('Processing next page...')

interpreter.process_page(page)

layout = device.get_result()

for lobj in layout:

if isinstance(lobj, LTTextBox):

x, y, text = lobj.bbox[0], lobj.bbox[3], lobj.get_text()

print('At %r is text: %s' % ((x, y), text))我使用PDFPage.get_pages(),这是创建文档、检查文档并将其传递给PDFPage.create_pages()的简写

我不需要处理LTFigures,因为PDFMiner目前无论如何都无法干净地处理它们内部的文本。

LAParams允许您设置一些参数,这些参数控制PDFMiner如何将PDF中的单个字符神奇地分组到行和文本框中。如果你惊讶于这样的分组是一件需要发生的事情,那么在pdf2txt docs中可以证明这一点:In an actual PDF file, text portions might be split into several chunks in the middle of its running, depending on the authoring software. Therefore, text extraction needs to splice text chunks.

LAParams的参数与大多数PDFMiner一样,没有文档记录,但是您可以看到它们in the source code或者在Python shell中调用help(LAParams)。参数的一些的含义在https://pdfminer-docs.readthedocs.io/pdfminer_index.html#pdf2txt-py给出,因为它们也可以作为参数在命令行传递给pdf2text。

上面的layout对象是一个LTPage,它是一个“布局对象”的iterable。每个布局对象都可以是以下类型之一。。。LTTextBox

LTFigure

LTImage

LTLine

LTRect

。。。或者他们的子类。(特别是,您的文本框可能都是LTTextBoxHorizontals。)

文档中的图片显示了LTPage结构的更多细节:

上面的每种类型都有一个.bbox属性,该属性包含一个(x0,y0,x1,y1)元组,分别包含对象的左、下、右和顶部的坐标。y坐标是从页面的底部开始的距离。如果您更方便使用从上到下的y轴,则可以从页面的.mediabox高度中减去它们:x0, y0, x1, y1 = some_lobj.bbox

y0 = page.mediabox[3] - y1

y1 = page.mediabox[3] - y0

除了bbox,LTTextBoxes还有一个.get_text()方法,如上所示,该方法将文本内容作为字符串返回。请注意,每个LTTextBox都是LTChars(PDF显式绘制的字符,带有bbox)和LTAnnos(PDFMiner根据相隔很远的字符向文本框内容的字符串表示添加的额外空格;这些字符没有bbox)的集合。

这个答案开头的代码示例结合了这两个属性来显示每个文本块的坐标。

最后,值得注意的是,与上面提到的其他堆栈溢出答案不同,我不需要递归到LTFigures中,PDFMiner似乎无法将该文本分组为LTTextBoxes(您可以在https://stackoverflow.com/a/27104504/1709587中的示例PDF上进行尝试),而是生成一个直接包含LTChar对象的LTFigure。原则上,您可以找出如何将它们组合成一个字符串,但PDFMiner(截至20181108版本)不能为您这样做。

不过,希望您需要解析的pdf不使用包含文本的Form XObjects,所以这个警告不适用于您。

pdf怎么查看坐标 python_如何从PDF文件中提取文本和文本坐标?相关推荐

  1. python怎么读取pdf为文本_如何从pdf文件中提取特定文本python

    我试图摘录这段文字:DLA LAND AND MARITIME ACTIVE DEVICES DIVISION PO BOX 3990 COLUMBUS OH 43218-3990 USA Name: ...

  2. gnuradio上怎么使用python文件_使用Python从PDF文件中提取数据

    前言 数据是数据科学中任何分析的关键,大多数分析中最常用的数据集类型是存储在逗号分隔值(csv)表中的干净数据.然而,由于可移植文档格式(pdf)文件是最常用的文件格式之一,因此每个数据科学家都应该了 ...

  3. 使用Python从PDF文件中提取数据

    前言 数据是数据科学中任何分析的关键,大多数分析中最常用的数据集类型是存储在逗号分隔值(csv)表中的干净数据.然而,由于可移植文档格式(pdf)文件是最常用的文件格式之一,因此每个数据科学家都应该了 ...

  4. java 取pdf 文本域_java – 使用iText从pdf文件中提取文本列

    我需要使用iText从pdf文件中提取文本. 问题是:一些pdf文件包含2列,当我提取文本时,我得到一个文本文件,其中列被合并为结果(即同一行中两列的文本) 这是代码: public class pd ...

  5. python自动翻译pdf_python实现从pdf文件中提取文本,并自动翻译的方法

    针对Python 3.5.2 测试 首先安装两个包: $ pip install googletrans $ pip install pdfminer3k googletrans会提供一个命令tran ...

  6. python用来自动修改pdf_python实现从pdf文件中提取文本,并自动翻译的方法

    针对Python 3.5.2 测试 首先安装两个包: $ pip install googletrans $ pip install pdfminer3k googletrans会提供一个命令tran ...

  7. java pdfbox 提取pdf 标题_java – 使用pdfbox从PDF文件中提取文本

    我试图使用pdfbox从PDF文件中提取文本,但不是作为命令行工具,而是在我的 Java应用程序中.我正在使用jsoup下载pdf. res = Jsoup .connect(host+action) ...

  8. PDF提取页面方法,如何从PDF文件中提取页面

    现在科技与时代的进步与发展人们所接触的都提升了,就连我们日常使用的文件类型也多样性了,现在使用很多的文件是PDF文件,那么有小伙伴们知道该怎么从PDF文件中提取页面吗,PDF提取页面的方法是什么呢,今 ...

  9. android提取pdf中文字,使用iTextG從Android上的pdf文件中提取文本

    當我試圖從SD卡中讀取pdf文件並從中提取文本時,什麼也沒有發生. 沒有錯誤,沒有警告,通知,也沒有結果文件. 我將源文件和結果都存儲在設備的SD卡的根文件夾中. 你們能幫我解決這個問題嗎? 這裏是我 ...

  10. 如何在CAD图纸中提取各点的坐标?

    日常CAD制图的工作中,我们会遇到许多问题,其中就有需要提取CAD中各点坐标的问题.如何在CAD图纸中提取各点的坐标?如果是手动一个一个提取的话,就很消耗时间,效率慢的同时可能还会有遗漏,没有办法把C ...

最新文章

  1. mysql5_pn卸载_windows mySql(5.7.30) 卸载及重装
  2. Python错误和异常学习
  3. boost::log::sinks::simple_event_log_backend用法的测试程序
  4. 操作系统之进程管理:12、生产者消费者问题和多级生产者多级消费者问题
  5. 【三维深度学习】多视角立体视觉模型R-MVSNet
  6. Java算法之寻找旋转数组中的最小值
  7. linux自动切换tty,Linux 中不适用功能键切换TTY
  8. gcc详解以及静态,动态库的生成 1
  9. MySQL数据类型详解
  10. nicescroll.js滚动条错位
  11. javaweb户籍管理系统
  12. Android—Gradle教程(一)
  13. bin to npy
  14. 呦呦鹿鸣,食野之苹-- 给新生儿的一封信
  15. python 源代码 macd双底 高 低_久其软件怎么样MACD指标的双底形态特征详解
  16. 虚拟linux jdk,虚拟机下Linux安装jdk
  17. 生成目录_将word转换成PDF
  18. 最新PS 2020版发布!逆天黑科技一键P图看哭设计师!
  19. JSON 字符串是如何被解析的?JsonParser 了解一下
  20. Python基础知识笔记

热门文章

  1. hibernate 学习笔记1
  2. 优化器--牛顿法总结
  3. django【orm操作】
  4. LUA 拾遗(编译-调试-运行)
  5. JSP自定义标签开发入门
  6. MOSS2007中实现表单验证
  7. 分布式调用时(WCF?)慎用 using(xxx){}
  8. 30kJava程序员升为全栈架构师的晋升之路
  9. [JS]手写动画最小时间间隔设置
  10. 2017年总结的前端文章——CSS高级技巧汇总