【发布时间】:2013-10-23 13:57:14
【问题描述】:
是否可以从 PDF 文件中提取有关特定字体/字体大小/字体颜色等的文本?我更喜欢 Perl、python 或 *nix 命令行实用程序。我的目标是从 PDF 文件中提取所有标题,这样我就可以在单个 PDF 中获得很好的文章索引。
【问题讨论】:
标签: pdf fonts extract font-size
是否可以从 PDF 文件中提取有关特定字体/字体大小/字体颜色等的文本?我更喜欢 Perl、python 或 *nix 命令行实用程序。我的目标是从 PDF 文件中提取所有标题,这样我就可以在单个 PDF 中获得很好的文章索引。
【问题讨论】:
标签: pdf fonts extract font-size
文本和/字体/字体大小/位置(没有颜色,我检查过)您可以从 Ghostscript 的 txtwrite 设备(尝试 -dTextFormat=0 | 1 选项)以及带有 -tt 选项的 mudraw (MuPDF) 中获取.然后使用例如解析类似 XML 的输出。 Perl。
【讨论】:
<img width=803 height=1155 src="data:image/png;base64 开头的编码图像这不是错误,它是一个功能,但我不需要图片,并假设只处理文本而不处理图像会更快。另外我想试试ghostscript的建议,你能更具体一点吗?非常感谢。
gs -sDEVICE=txtwrite -dTextFormat=0 -o out.txt in.pdf 或 -dTextFormat=1。输出不是“txt”,而是像带有 -ttt 选项的 mudraw 的 xml-ish。
Segmentation fault (core dumped) 也许我在旧版 Fedora 上使用旧版本(发现这是已知错误)。无论如何,输出看起来类似于使用mudraw -ttt or mudraw -x 选项(好像每个字符都是一个元素)。似乎mudraw -tt 是这样。再次感谢。
我有工作代码,可以从 pdf 中提取具有字体大小的文本。 在 PDfminer 的帮助下,我完成了这项工作。有很多pdf的
from pdfminer.high_level import extract_pages
from pdfminer.layout import LTTextContainer, LTChar,LTLine,LAParams
import os
path=r'path\whereyour pdffile'
os.chdir(path)
Extract_Data=[]
for PDF_file in os.listdir():
if PDF_file.endswith('.pdf'):
for page_layout in extract_pages(PDF_file):
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())])
【讨论】: