英語: How to get the uploaded file path and processing its file in Streamlit
モチベーション
Streamlit は Python code のみで簡単かつ高速に Web アプリを作成できる強力なパッケージ。
Streamplit で作られた Web アプリ経由でファイルをアップロードして、そのファイルを処理したい際の具体的な実現方法がなかったので備忘録がてら残しておく。
PDF ファイルをアップロードして、画像に変換する Web アプリ
具体的に例を交えつつ説明する。
Streamlit を使って、PDF ファイルをアップロードしてアップロードされた PDF ファイルを画像化するアプリを作成する。
今回は、Belval/pdf2image という PDF パッケージを使用する。
このパッケージは処理したい PDF のファイルパスを要求するインターフェースなので今回の実例に沿っていてわかりやすい。
ローカルマシンは MacOS を想定しており、pdf2image
はpoppler の事前インストールが必須。
完成形のスクリーンショット
GitHub でもコードを公開しておきました。
hurutoriya/streamlist-file-uploader-example
デモ動画はこちら
Demo Movie in Youtube
Makefile
Makefile は依存パッケージを事前インストールするために採用
Poetry for package management
環境構築は poetry を使っています。
Streamlit Python file
Conclusion
これで、Streamlit 上でファイルをアップロードして、そのアップロードされたファイルに対する処理ができます。
画像や音声など色々応用先があるので便利そう。
動作が遅いという欠点はあれど、これだけ簡単に GUI を Python のみで構築できるのは驚き。
Protly Dash も 2 年ほど前に使ったことがあるけど、UI のライフサイクルや HTML を結構意識しないとかけなかったので辛かった記憶があるので、なおさら感動している。
Reference