如何使用python代码查找PDF文件每一段的字体大小?
Posted
技术标签:
【中文标题】如何使用python代码查找PDF文件每一段的字体大小?【英文标题】:How to find the Font Size of every paragraph of PDF file using python code? 【发布时间】:2021-09-06 21:18:01 【问题描述】:现在我正在做一个项目,我必须在该项目中找到该 PDF 文件中每个段落的字体大小。我尝试过各种 python 库,如 fitz、PyPDF2、pdfrw、pdfminer、pdfreader。所有的库都获取文本数据,但我不知道如何获取段落的字体大小。 在此先感谢..感谢您的帮助。
我已经尝试过了,但无法获得字体大小。
import fitz
filepath = '/home/user/Downloads/abc.pdf'
text = ''
with fitz.open(filepath ) as doc:
for page in doc:
text+= page.getText()
print(text)
【问题讨论】:
@K J 是的,段落是一堆文本,也可能包含不同的高度。但是有什么办法可以获得这些字体高度吗?? 它必须在本地运行还是可以使用具有 Python 库的云服务? @joelgeraci 是的,我正在使用 python 库并想在本地运行它,但是我可以做些什么来从 pdffile 的文本中提取字体大小?? 好的 - 如果您需要它在本地运行,我无法帮助您。 Adobe 有一个 SaaS Extract API,可以将文本提取为段落,并为您提供每个段落的详细字体信息,包括段落中的样式。它有一个 Python SDK,但它是基于云的。 @joelgeraci 感谢您宝贵的时间和建议,但我找到了解决方案。 【参考方案1】:我从 pdfminer 获得了解决方案。 下面给出了相同的python代码。
from pdfminer.high_level import extract_pages
from pdfminer.layout import LTTextContainer, LTChar,LTLine,LAParams
import os
path=r'/path/to/pdf'
Extract_Data=[]
for page_layout in extract_pages(path):
for element in page_layout:
if isinstance(element, LTTextContainer):
for text_line in element:
for character in text_line:
if isinstance(character, LTChar):
Font_size=character.size
Extract_Data.append([Font_size,(element.get_text())])
【讨论】:
以上是关于如何使用python代码查找PDF文件每一段的字体大小?的主要内容,如果未能解决你的问题,请参考以下文章
一段时间后,打开的办公室在转换后的 PDF 中出现乱码字体崩溃
python使用fpdf生成pdf文件:配置多种语言字体写入多种文字
浏览pdf文件以查找特定页面并使用python从图像中提取表格数据