↓もし、良かったらSNSでの紹介よろしくお願いします。

PythonでPDFファイルから文字を抽出する

bootstrap

本記事は古い内容です。
下記の記事が最新の内容を反映しているので参考にしてください。

https://www.tech-tech.xyz/archives/python-pdf.html

PythonでPDFから文字抽出

PDFをPythonで利用する場合pdfminerが便利

Pythonでpdfから文字列を抽出する場合pdfminerを使いましょう。

pdfminerとは?

pdfminerはPythonでPDFのテキストの抽出、解析を行うライブラリです。
Pythonで書かれていてオープンソースとして公開されています。

pdfminerをPythonにインストール

ソースのダウンロード

git clone https://github.com/euske/pdfminer/

pdfminerのソースをダウンロードしましょう。

gitが入ってない人は下記のリンクへ飛んで”Clone or download”をクリック→”Download ZIP”でソースをダウンロードしましょう。

pdfminerのソース

cd pdfminer

文字コードの読み込み

LinuxまたはMacの場合

make cmap

Windowsの場合

mkdir pdfminer\cmap
python tools\conv_cmap.py -c RKSJ=cp932 -c EUC=euc-jp -c UniJIS-UTF8=utf-8 pdfminer\cmap Adobe-Japan1 cmaprsrc\cid2code_Adobe_Japan1.txt

pdfminerのインストール

python setup.py install

サンプルコード

from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
input_path = "input.pdf"
output_path = "result.txt"
rsrcmgr = PDFResourceManager()
codec = 'utf-8'
params = LAParams()
params.detect_vertical = True
with file(output_path, "wb") as output:
    device = TextConverter(rsrcmgr, output, codec=codec, laparams=params)
    with file(input_path, 'rb') as input:
        interpreter = PDFPageInterpreter(rsrcmgr, device)
    for page in PDFPage.get_pages(input):
        interpreter.process_page(page)
    device.close()