【问题标题】:Extract text from PDF in respect to formatting (font size, type etc)从 PDF 中提取有关格式(字体大小、类型等)的文本
【发布时间】:2013-10-23 13:57:14
【问题描述】:

是否可以从 PDF 文件中提取有关特定字体/字体大小/字体颜色等的文本?我更喜欢 Perl、python 或 *nix 命令行实用程序。我的目标是从 PDF 文件中提取所有标题,这样我就可以在单个 PDF 中获得很好的文章索引。

【问题讨论】:

    标签: pdf fonts extract font-size


    【解决方案1】:

    文本和/字体/字体大小/位置(没有颜色,我检查过)您可以从 Ghostscript 的 txtwrite 设备(尝试 -dTextFormat=0 | 1 选项)以及带有 -tt 选项的 mudraw (MuPDF) 中获取.然后使用例如解析类似 XML 的输出。 Perl。

    【讨论】:

    • 感谢您的回复。似乎 mudraw 是一种方式。我不喜欢的一件事是我无法禁用转换图像,我得到一堆以<img width=803 height=1155 src="data:image/png;base64 开头的编码图像这不是错误,它是一个功能,但我不需要图片,并假设只处理文本而不处理图像会更快。另外我想试试ghostscript的建议,你能更具体一点吗?非常感谢。
    • @WakanTanka,尝试使用 -ttt 参数的 mudraw(和 -x 也值得探索),然后输出中没有图像,但呈现的文本信息略有不同。为了您的目的,Ghostscript 可以这样使用:gs -sDEVICE=txtwrite -dTextFormat=0 -o out.txt in.pdf 或 -dTextFormat=1。输出不是“txt”,而是像带有 -ttt 选项的 mudraw 的 xml-ish。
    • 我已经尝试过 ghostsript(0 和 1),但它给了我错误。 Segmentation fault (core dumped) 也许我在旧版 Fedora 上使用旧版本(发现这是已知错误)。无论如何,输出看起来类似于使用mudraw -ttt or mudraw -x 选项(好像每个字符都是一个元素)。似乎mudraw -tt 是这样。再次感谢。
    【解决方案2】:

    我有工作代码,可以从 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())])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-22
      • 1970-01-01
      • 2014-04-15
      • 2018-08-25
      • 1970-01-01
      • 2019-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多