一. pdfminer.six 中的 bbox 定义
|
|-------+====={+}
| | |
|------{+}=====+
|
+----------------->
以页面的左下角为原点,区域的(左下,右上)两个点的座标
所以 bbox 返回的四个座标 [x, y, xx, yy]
对应如下
- x : 区域左下角距离页面左下角的水平距离
- y : 区域左下角距离页面左下角的垂直距离
- xx :区域右上角距离页面左下角的水平距离
- yy :区域右上角距离页面左下角的垂直距离
二. 取某个区域的文本内容的代码:
import os
from pdfminer.high_level import extract_pages
from pdfminer.layout import LTTextBox, LTTextLine
def extract_text_with_coords(pdf_path):
p = 0
for page_layout in extract_pages(pdf_path):
if p == 1:
company = extract_company(page_layout)
phone = extract_phone(page_layout)
address = extract_address(page_layout)
print(company)
print(phone)
print(address)
p += 1
def extract_inbox(page_layout, x, y, xx, yy):
text = ""
for element in page_layout:
if isinstance(element, LTTextBox) or isinstance(element, LTTextLine):
if is_elemnt_inbox(x, y, xx, yy, element):
text += element.get_text().strip()
return text
def extract_company(page_layout) -> str:
return extract_inbox(page_layout, 350, 640, 500, 660)
def is_elemnt_inbox(x, y, xx, yy, element) -> bool:
x0, y0, x1, y1 = element.bbox
if x0 >= x and y0 >= y and x1 <= xx and y1 <= yy:
return True
else:
return False
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。