2
3

Pythonでファイル(text,PDF,docx)の文字情報を取得してみる

Last updated at Posted at 2024-05-25

はじめに

今回は、Pythonでアプリにアップロードしたファイル(textやPDF、wordデータ)の文字情報を読み込むことに関するアウトプットをしていきます。

本編

考え方

フロントでアップロードしてサーバーに送られるファイルデータは、バイナリーデータであることを頭に入れておくことが大事です。
バイナリーデータとは、コンピュータがわかる形式のデータのことです。
https://wa3.i-3-i.info/word1146.html

text形式データの文字情報を取得

text形式データは、decodeメソッドを使えば取れちゃいます。
ワー、チョー簡単ナンデスケド

# binary_dataは、フロントからきたデータ
text = binary_data.decode('utf-8')

公式も見てみると、デコードされた情報返してくれると書いておる。

PDF形式データの文字情報を取得

  • ioを利用して、バイナリデータからBytesIOオブジェクトを作成
    ioについてはこちらのように、バイナリーデータをファイルオブジェクトのように扱うことできます。
    BytesIOオブジェクトを使う主な目的は、ディスク上のファイルを開かずにバイナリデータを処理することです。これにより、一時ファイルの作成や削除の手間が省け、メモリ上で完結できるので高速に処理できます

  • PyPDF2というものを利用して、簡単にPDFの文字情報を取得できます
    https://pypi.org/project/PyPDF2/

import io
from PyPDF2 import PdfReader

file = io.BytesIO(binary_data)
reader = PdfReader(file)
# PDFのページ数が見れる
number_of_pages = len(reader.pages)

# 全ページのテキストを抽出
text_list = []
for page in reader.pages:
    text = page.extract_text()
    text_list.append(text)

# テキストを連結して1つの文字列に変換
text = "\n".join(text_list)

word形式(docx)データの文字情報を取得

import io
from docx import Document

file = io.BytesIO(binary_data)
doc = Document(file)


# 全段落のテキストを取得
text_list = []
for para in doc.paragraphs:
    para_text = para.text
    text_list.append(para_text)

# テキストを連結して1つの文字列に変換
text = "\n".join(text_list)

雑感

Pythonも奥が深く、まだまだ知らなことだらけですが少しづつ知れると楽しい!
docxに関しては、段落、表、図も取得できたりと自分の引き出しを増やしていきたい、、!

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3