如何使用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文件每一段的字体大小?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Amazon Polly 阅读 PDF 文件?

一段时间后,打开的办公室在转换后的 PDF 中出现乱码字体崩溃

python使用fpdf生成pdf文件:配置多种语言字体写入多种文字

浏览pdf文件以查找特定页面并使用python从图像中提取表格数据

python使用fpdf创建pdf文件包含:页眉页脚并嵌入logo图片设置使用中文字体

如何从 PDF 中提取嵌入字体作为有效字体文件?