1. 产品
  2.   PDF格式
  3.   Python
  4.   PyMuPDF
 
  

通过自由Python图书馆提取文本和图像

免费Python API允许编辑和呈现PDF文件;提取文本和图像、编辑PDF页、合并/分裂和转换PDF页。

PyMuPDF是一个轻量开放源PythonAPI、它为PDF添加Python绑定和抽象。 API份文件大小不大、但很快提供了一些大众文件格式、包括PDF XPS份、10份开放式、PUB和FB2份(eBooks)格式、大约10份。 PyMuPD是非常可靠的、以其最高的呈现能力著称。 由于图书馆的重量非常轻、因此对于资源通常有限的平台来说、它是一个很好的选择、比如智能手机。

有许多基本和先进的特性、支持PDF个文档呈现和转换、例如将PDF页转换为NG、修改元数据、以提取PDF页图像 PyMuPDF包括支持许多平台、如Mac、Linux和Windows。

Previous Next

从PyMuPDF开始

如果您的平台可以使用Python轮安装PyMuPDF、下列命令将安装。

通过管道安装PyMuPDF

 python -m pip install --upgrade pip
python -m pip install --upgrade pymupdf
 

通过git存储器

 git clone https://github.com/pymupdf/PyMuPDF.git 

也可以手动安装; 直接从 GitHub 存储库下载最新版本文件。

通过Python搜索PDF档文本

PDF是世界上最喜欢的文件格式之一、可以在互联网上分享文件、因为它保留了文本格式和图形。 但与其他文件相比、在这些文件中搜索文本并不容易。 免费的PyMuPDF库允许软件开发者在Python应用程序中添加文本搜索功能。 它允许查找页面上的某个文本字符串。

通过Python查找PDF页文本的服装

areas = page.search_for("mupdf") 

通过Python提取PDF个文本和图像API

开放源码YPDF图书馆包括了PDF个文本和图像工作的几个重要特点。 图书馆提供了从PDF份文件中提取文本和图像的各种功能。 默认情况下、它允许提取纯文本与行中断。 没有格式化、没有文本位置详细、没有图像。 此外、它支持生成一个文本块列表、生成一个单词列表、创建包括任何图像在内的页面的完整视觉版本以及更多。

如何通过Python API从PDF提取文本

from operator import itemgetter
from itertools import groupby
import fitz
doc = fitz.open( 'mydocument.pdf' )
pages = [ doc[ i ] for i in range( doc.pageCount ) ]
for page in pages:
  text_words = page.getTextWords()
  # The words should be ordered by y1 and x0
  sorted_words = SortedCollection( key = itemgetter( 3, 0 ) )
  for word in text_words:
    sorted_words.insert( word )
  # At this point you already have an ordered list. If you need to 
  # group the content by lines, use groupby with y1 as a key
  lines = groupby( sorted_words, key = itemgetter( 3 ) )

加入并分发PDF份文件

将不同PDF个文件组合起来是一个非常有用的特性、使用户能够拥有一个PDF个文件、而不是拥有一打独立的PDF个文件。 免费开放源码交叉平台。YPDF库让软件程序员能够轻松地将不同的文件或复制页合并在PDF个文档之间。 它还使用户有能力将大PDF个文档分成较小的文件、只有几行Python代码。 还可以选择PDF份文件的某些特定页面、从中创建一份新的文件。

从第一和最后十页创建新文件

doc2 = fitz.open()                 # new empty PDF
doc2.insert_pdf(doc1, to_page = 9)  # first 10 pages
doc2.insert_pdf(doc1, from_page = len(doc1) - 10) # last 10 pages
doc2.save("first-and-last-10.pdf")

通过Python阅读和出口PDF元数据

开放源代码YPDF库提供了完整的功能、可以访问和读取PDF个文件的元数据而不受任何外部依赖。 它支持各种元数据键、例如创建日期、作者名称、创建者应用程序、任何主题、加密方法、文件格式等。 也可以将元数据出口到CSV格式。

 

通过Python API出口PDF元数据至CSV元

import csv
import fitz
import argparse
parser = argparse.ArgumentParser(description="Enter CSV delimiter [;], CSV filename and documment filename")
parser.add_argument('-d', help='CSV delimiter [;]', default = ';')
parser.add_argument('-x', help='delete XML info [n]', default = 'n')
parser.add_argument('-csv', help='CSV filename')
parser.add_argument('-pdf', help='PDF filename')
args = parser.parse_args()
delim = args.d               # requested CSV delimiter character
assert args.csv, "missing CSV filename"
assert args.pdf, "missing PDF filename"
print "delimiter", args.d
print "xml delete", args.x
print "csv file", args.csv
print "pdf file", args.pdf
print "----------------------------------------"
doc = fitz.open(args.pdf)
oldmeta = doc.metadata
print "old metadata:"
for k,v in oldmeta.items():
    print k, ":",v
with open(args.csv) as tocfile:
    tocreader = csv.reader(tocfile, delimiter = delim)
    for row in tocreader:
        assert len(row) == 2, "each row must contain 2 entries"
        oldmeta[row[0]] = row[1]
print "----------------------------------------"
print "\nnew metadata:"
for k,v in oldmeta.items():
    print k, ":",v
doc.set_metadata(oldmeta)
doc.saveIncr()
 中国人