我很好奇是否可以使用 pdfminer 来提取字体大小。我认为这将有助于分离不同的部分。我知道下面有讨论,但我很好奇是否可以使用 pdfminer
pdfminer 文档说这是可能的http://www.unixuser.org/~euske/python/pdfminer/
但是当我在命令行中输入 he following 时,我只得到一个纯文本文档。我没有看到任何字体信息。
pdf2txt.py -o output.html samples/CentolaCV.pdf
Run Code Online (Sandbox Code Playgroud)
例如..
2008-13 Assistant Professor, Sloan School of Management, M.I.T.
2006-08 Robert Wood Johnson Scholar in Health Policy, Harvard University
2001-02 Visiting Scholar, The Brookings Institution
Run Code Online (Sandbox Code Playgroud)
这个任务让我困惑了很长时间。除了提取字体信息之外,我还想在 python 脚本中运行此代码。
但是,今天我能够解决它。下面我写了一个脚本,pdf2txt.py从命令行调用脚本,然后从解析的 PDF 和新创建的 html 文件中提取字体信息。
import os
# set the paths
pathToScript = r'path\to\script\pdf2txt.py'
pathPDFinput = os.path.join(path\to\file, 'test.pdf')
pathHTMLoutput = os.path.join(path\to\file, 'test.html')
# call the pdf2txt.py from the command line
os.system('python {} -o {} -S {} -t html'.format(pathToScript, pathHTMLoutput, pathPDFinput))
Run Code Online (Sandbox Code Playgroud)
提取每个 html 标签的字体大小:
# credits to akash karothiya:
# /sf/ask/2730891761/#39015419
import re
import pandas as pd
from bs4 import BeautifulSoup
# open the html file
html = open(pathHTMLoutput, 'r')
soup = BeautifulSoup(html)
font_spans = [data for data in soup.select('span') if 'font-size' in str(data)]
output = []
for i in font_spans:
# extract fonts-size
fonts_size = re.search(r'(?is)(font-size:)(.*?)(px)', str(i.get('style'))).group(2)
# extract into font-family and font-style
fonts_family = re.search(r'(?is)(font-family:)(.*?)(;)', str(i.get('style'))).group(2)
# split fonts-type and fonts-style
try:
fonts_type = fonts_family.strip().split(',')[0]
fonts_style = fonts_family.strip().split(',')[1]
except IndexError:
fonts_type = fonts_family.strip()
fonts_style = None
output.append((str(i.text).strip(), fonts_size.strip(), fonts_type, fonts_style))
# create dataframe
df = pd.DataFrame(output, columns = ['text', 'fonts-size', 'fonts-type', 'fonts-style'])
Run Code Online (Sandbox Code Playgroud)
小智 5
尝试使用以下-t标志指定文件输出类型:
pdf2txt.py -o output.html -t html samples/CentolaCV.pdf
这应该返回一个带有样式属性 font-family 和 font-size 的 html 文件。
编辑:实际上,看起来输出结尾可以指定没有-t标志的输出文件类型。您可以链接到您尝试从中提取字体样式的 pdf 文件吗?
| 归档时间: |
|
| 查看次数: |
9777 次 |
| 最近记录: |