Python パイソンで PDFからテキストファイルを作る方法 - dnjiro’s 9VAe blog

dnjiro’s 9VAe blog

誰でもアニメが作れる無料ソフト9VAeきゅうべえ開発者のブログ

Python パイソンで PDFからテキストファイルを作る方法

Python パイソンで PDFからテキストファイルを作る方法を解説しました。Pythonで アニメを作る方法はこちらPythonの使い方はこちら

 

ほかの解説動画はこちら

目次

Python (パイソン) の入手

Windows の場合

ラズベリーパイの場合

Mac の場合

  • M1版 Macの場合、Python.jpのフルインストーラ版から、ダウンロードするのが簡単。ここ(pythonlinks.python.jp) からダウンロードできます。
  • IntelMac では、python (Ver2), python3(Ver3) が最初からはいっており、ターミナルから使えました。
  • ターミナルは「アプリケーション>ユーティリティ」の中にはいっています。ドックの上にターミナルアイコンをドラッグして登録しておくとよいでしょう。

python2 と python3 の違い

  • python2 と python3 で書き方が違うところがあるので注意(ネット上には、python2のプログラムもあり、そのまま python3で動かすとエラーになります)
  • プログラムに日本語を入れたいとき(表示したい文字が日本語など)は、python3 を使います。

 

Python (IDLE) の起動

Pythonを使ってみましょう。基本的な IDLE を使ってみます。

Windows の場合

  1. Windowsボタンをクリックし「python」と入力して、アプリ IDLE(Python) を実行。
  2. ターミナルから「idle」を実行してもかまいません。Python という名前で IDLE が起動します。

ラズベリーパイの場合

  1. 画面左上の Raspi ボタン>Programming(プログラミング) > Python の Shell ウィンドウ(実行画面)が開きます。

 

IDLE(Python)の操作

  1. Fileメニューから、New File を実行。エディタがひらきます
  2. ここに下のようなプログラムを入れます 
  3. Run メニューから、Run Module を実行
  4. Pythonウィンドウで実行されます。エラーがあれば、ここに表示されます

PDFを読み込むライブラリ:pyMuPDF

Windows で _extra がみつからないエラーがでた場合

Python のプログラム 例1

pymupdf がインストールできたら、下の Python プログラムをいれてみましょう。

  1. PDFファイルを開く
  2. 中のテキストを表示
import fitz # PDF処理(pymupdf)
srcPDF = "c:/test/test.pdf" # PDFファイル適当に修正してください
fr = fitz.open(srcPDF)
for pg in fr:
    txt=pg.get_text()
    txt=txt.replace('\n', '') #改行削除
    print(txt)
fr.close()
a = input("***end*** ")
  • import fitz は、PDFファイル処理するライブラリです、pymupdf で導入
  • srcPDF は、PDFファイルのフルパス。パスの区切りは「/」です
  • fitz.open() がPDFファイルを開く関数。
  • for pg in fr: は、1ページずつ読み出して、pg にいれるの意味
  • pg.get_text()でテキストを取得、txt.replace('\n', '')で改行を削除しています
  • print() でテキストを表示
  • Input() 文字入力関数で、"***end*** " を表示して入力待ちになります

Runメニュー>Run Module で実行します。エラーがなければ PDFの中の文字が表示されるはずです。

Python のプログラム 例2

このプログラムを改造してみましょう。

  1. PDFから取得した文字列のうち、ある文字列1から文字列2までを書き出す

プログラム例を示します。

import fitz # PDF処理(pymupdf)
import os # ファイル操作
srcPDF = "c:/test/test.pdf" # PDFファイル outTXT = "c:/test/out.txt" # 出力先フォルダ(各自の環境に合わせて修正) srch1="文字列1" #ここから srch2="文字列2" #ここまで fr = fitz.open(srcPDF) txt="" for pg in fr: txt+=pg.get_text() fr.close() x1=txt.find(srch1) if x1>=0: txt=txt[x1:] x2=txt.find(srch2) fw = open(outTXT,'x') # 'x'新規 'w'既存ファイルに書き込み 'a'追記 fw.write(txt[0:x2]) # 文字列2までのテキストを書き込みます fw.close() # 書き込み終了 a = input("***end*** ")
  • x1=txt.find(srch1) で、文字列1をサーチします。文字が見つかれば x1 は0以上になります
  • txt[x1:]は、x1番目(先頭は0)文字から最後までの文字列
  • x2で文字列2をサーチします
  • fwで文字列を書き出します

Runメニュー>Run Module で実行します。エラーがなければ テキストが作成されるはずです。

 

さらに勉強をすすめたいなら

9VAeきゅうべえに関する問い合わせ