1. 製品
  2.   PDF
  3.   Python
  4.   PyMuPDF
 
  

ジェンダーPDFファイル、無料のPythonライブラリを介してテキストと画像を抽出

無料のPython APIは、PDFファイルを編集およびレンダリングすることができます。テキストと画像を抽出し、PDFページを編集し、PDFページをマージ/スプリット&簡単に変換します。

PyMuPDF は軽量のオープン ソース Python API で、MuPDF に Python バインディングと抽象化を追加します。この API はサイズは小さいですが非常に高速であり、PDF、XPS、OpenXPS、CBZ、EPUB、および FB2 (eBook) 形式を含む多くの一般的なドキュメント形式をサポートし、約 10 の一般的な画像形式を開くこともできます。ドキュメントのように扱われます。 PyMuPD は非常に信頼性が高く、最高のレンダリング機能で知られています。ライブラリは非常に軽量であるため、スマートフォンなど、通常はリソースが限られているプラットフォームに最適です。

PyMuPDF API では、PDF から PNG への変換、メタデータへのアクセスと表示、アウトラインの操作、ラスターまたはベクター (SVG) 画像へのページのレンダリング、PDF テキストなど、PDF ドキュメントのレンダリングと変換用にサポートされている基本機能と高度な機能が多数あります。サポートの検索、PDF ページからのテキストの抽出、PDF からの画像の抽出、GUI での画像の表示、PDF ページの変更、新しい PDF ページの作成、不要な PDF ページの削除、データの埋め込みなど。 PyMuPDF には、Mac、Linux、Windows などの多数のプラットフォームのサポートが含まれています。

Previous Next

PyMuPDF入門

PyMuPDF は pip を使用してインストールできます。このコマンドは、プラットフォームで使用できる Python ホイールからインストールします。

PyMuPDFをインストールする ピップ

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

gitリポジトリからPyMuPDFをクローンする

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

手動でインストールすることもできます。 GitHub リポジトリから最新のリリース ファイルを直接ダウンロードします。

PythonでPDFファイルでテキストを検索

PDF は、インターネット上で文書を共有するための世界有数のファイル形式の1つです。これにより、すべてのテキストの書式とグラフィックスが内部に保持されます。 しかし、他の文書と比較して、これらのファイル内のテキストを検索するのは簡単ではありません。 無料のYouPDFライブラリは、ソフトウェア開発者がPythonアプリケーション内でテキスト検索機能を追加することができます。 特定のテキスト文字列が存在するページ上の場所を検索できます。

PythonでPDFページのテキスト文字列が現れる場所を検索

areas = page.search_for("mupdf") 

Python APIでPDFのテキストと画像を抽出

オープンソースYouPDFライブラリには、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 ) )

PythonでPDFドキュメントを結合して分割する

異なるPDFファイルを組み合わせることは、ダース別PDF秒を持っているのではなく、ユーザーがPDFを持っている能力を与える非常に便利な機能です。 自由でオープンソースのクロスプラットフォームYouPDFライブラリは、ソフトウェアプログラマがさまざまなファイルと異なるPDFの文書間でページをマージしたり、簡単にコピーする力を与えます。 また、複数のPDFの文書を小さなファイルに分割し、複数の Python コードの行を分割する権限を与えます。 PDFのドキュメントの特定のページを選択し、そこから新しいドキュメントを作成することもできます。

最初の10ページから新しいドキュメントを作成

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メタデータをCSVに読み書き

オープンソース YouPDF ライブラリは、外部の依存関係なく 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()
 日本