ホームページ  >  記事  >  バックエンド開発  >  Python は PDF コンテンツを読み取ります

Python は PDF コンテンツを読み取ります

高洛峰
高洛峰オリジナル
2016-11-22 16:44:511837ブラウズ

1. はじめに

夜に「Python Network Data Collection」という本を読んでいて、PDF コンテンツを読み取るためのコードを見て、数日前に Jisouke が Web ページから PDF コンテンツを取得するためのクローリング ルールをリリースしたばかりだったことを思い出しました。 . このルールは、Web クローリング用に PDF コンテンツを HTML として扱うことができます。この魔法は、PDF を解析し、PDF 形式を div タグなどの HTML タグに変換する Firefox の機能によるもので、GooSeeker Web クローリング ソフトウェアを使用して、通常の Web ページと同じように構造化コンテンツをクロールできるようになります。

これにより、Python クローラーを使用してどこまで実現できるのかという疑問が生じます。以下に実験手順とソースコードを説明します。

2. PDF をテキストに変換する Python ソース コード

以下の Python ソース コードは、PDF ファイルの内容を (インターネット上またはローカルで) 読み取り、テキストに変換し、印刷します。このコードは主にサードパーティ ライブラリ PDFMiner3K を使用して PDF を文字列に読み取り、StringIO を使用してそれをファイル オブジェクトに変換します。 (ソース コードのダウンロード アドレスについては、記事の最後にある GitHub ソースを参照してください)

from urllib.request import urlopen
from pdfminer.pdfinterp import PDFResourceManager, process_pdf
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from io import StringIO
from io import open

def readPDF(pdfFile):
    rsrcmgr = PDFResourceManager()
    retstr = StringIO()
    laparams = LAParams()
    device = TextConverter(rsrcmgr, retstr, laparams=laparams)

    process_pdf(rsrcmgr, device, pdfFile)
    device.close()

    content = retstr.getvalue()
    retstr.close()
    return content

pdfFile = urlopen("http://pythonscraping.com/pages/warandpeace/chapter1.pdf")
outputString = readPDF(pdfFile)
print(outputString)
pdfFile.close()

PDF ファイルがコンピューター上にある場合は、urlopen によって返された pdfFile オブジェクトを通常の open() ファイル オブジェクトに置き換えます。

3. Outlook

この実験では、冒頭で述べたように PDF をテキストに変換するだけで、HTML タグには変換しません。そのため、この機能が Python プログラミング環境で利用できるかどうかは今後検討されます。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。