HTMLでWordファイル送信後、自然言語処理を行えるようにするまで
初回の投稿となりますが、HTML上で送信したWordファイルから、中身の文章を受け取って自然言語処理を行う手前までのフローを解説していこうと思います。
現役のエンジニアの方々からすると、何て事のない内容になっているかと思いますが、何もわからなかった過去の自分に向けて書いていこうと思います。
※前提として、Flaskを使用して、HTMLのページを開けるぐらいの知識はあると仮定して進めていきます。
HTML上でのファイルの受け取り
こちらは、HTML上で、ファイルの受け取る方法です。
<form action="/result" method="POST" enctype="multipart/form-data">
<div class="file_select">
<label for="file">wordファイルを選んでね:</label>
<input type="file" name="file" accept=".docx">
</div>
<div class="result_btn">
<input type="submit" value="送信" class="send">
</div>
</form>
まず、
の中のaction="/"で 送信先のページを指定(Flask側で指定したもの)、その後、methodをPOSTに設定し、情報を送れるようにします。enctypeで行っているのはファイルのアップロードを行う際に全ての種類のファイルを受け取れるようにしています。
この時、acceptという属性を使用することで、送信するファイルを指定できます。
ここまで行うと
こんな感じになります。
Flask側での処理
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route("/result", methods=["GET", "POST"])
def upload():
if request.method == "GET":
return render_template('result.html')
elif request.method == "POST":
file = request.files['file']
sum_result = summarize_docx(file)
return render_template('result.html', sum_result=sum_result)
if __name__ == "__main__":
app.run(debug=True)
ここでは色々な処理がされいますが、重要なのは
elif request.method == "POST":
file = request.files['file']
sum_result = summarize_docx(file)
という部分です!
fileという変数にrequest.filesで先ほどHTMLで送信してもらったdocxファイルを受け取ってますね。
そしてその後、別のpythonファイルでdocxの中身を要約する関数を作って、その関数に引数としてfileを与えて、使っています。
それが
sum_result = summarize_docx(file)
という部分ですね。
今回は以上です!
次回は実際にdocxファイルの中身を開けて自然言語処理をしていこうと思います。
とてつもなく遅いペースですが、また時間があるときに投稿していきたいです。
[今回の私の場合]
受け取ったwordファイルを要約したり、それを図に起こして可視化したりするWebアプリを作りました。
これらはまた別の記事で書いていこうと思います。
最後に
初め私は何もわからずここまで辿り着くのにも苦労しました!
HTML側でどのようにファイルを受け取るかも忘れていました^^;
そして、私はまだまだ駆け出しで、わからないことや拙い部分も多々あるので、
「そこ間違ってるよ!」、「もっとこうしたほうがいいよ!」ということがありましたらご教授いただけますと幸いです。
最後に、過去の自分に向けて書いているつもりではありますが、
もしどこかの誰かがこの記事を読んで少しでも参考になったと思って頂ければ幸いです。
ではまた!
追記
先日までacceptでファイルを指定できたのでそこだけ編集しました。
バックエンド側で色々条件分岐しましたが無意味でした。笑