Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
StreamlitとLangChainを使った表画像OCRアプリの実装
Search
熊懐葵
October 26, 2024
Technology
3
760
StreamlitとLangChainを使った表画像OCRアプリの実装
機械学習の社会実装勉強会 第40回 (
https://machine-learning-workshop.connpass.com/event/334075/
) の発表資料です。
熊懐葵
October 26, 2024
Tweet
Share
More Decks by 熊懐葵
See All by 熊懐葵
Claude Codeで進めるAWSリソースのTerraform移行
aoikumadaki
0
59
n8nで定期成果報告の資料づくりを自動化する
aoikumadaki
0
160
LangGraphとFlaskを用いた社内資料検索ボットの実装④GithubRetriever構築編
aoikumadaki
0
79
LangGraphとFlaskを用いた社内資料検索ボットの実装③アプリケーション構築編
aoikumadaki
0
110
LangGraphとFlaskを用いた社内資料検索ボットの実装②Retriever構築編
aoikumadaki
0
200
LangGraphとFlaskを用いた社内資料検索ボットの実装①AIエージェント構築編
aoikumadaki
0
390
LangChainでデータ分析エージェントを作ってみる
aoikumadaki
0
290
AWS LambdaとLangSmithを使った社内レポート添削システムMinervaの実装
aoikumadaki
0
330
Other Decks in Technology
See All in Technology
AIとともに歩んでいくデザイナーの役割の変化
lycorptech_jp
PRO
0
640
生成AI時代のセキュアコーディングとDevSecOps
yuriemori
0
140
OpenTelemetry が拡げる Gemini CLI の可観測性
phaya72
2
910
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
3
20k
AI Agent Dojo #2 watsonx Orchestrateフローの作成
oniak3ibm
PRO
0
140
Implementing and Evaluating a High-Level Language with WasmGC and the Wasm Component Model: Scala’s Case
tanishiking
0
150
Geospatialの世界最前線を探る [2025年版]
dayjournal
1
260
AWS UG Grantでグローバル20名に選出されてre:Inventに行く話と、マルチクラウドセキュリティの教科書を執筆した話 / The Story of Being Selected for the AWS UG Grant to Attending re:Invent, and Writing a Multi-Cloud Security Textbook
yuj1osm
1
100
LLMアプリの地上戦開発計画と運用実践 / 2025.10.15 GPU UNITE 2025
smiyawaki0820
2
700
混合雲環境整合異質工作流程工具運行關鍵業務 Job 的經驗分享
yaosiang
0
100
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
14k
「改善」ってこれでいいんだっけ?
ukigmo_hiro
0
380
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
431
66k
Producing Creativity
orderedlist
PRO
347
40k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
What's in a price? How to price your products and services
michaelherold
246
12k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3k
Rails Girls Zürich Keynote
gr2m
95
14k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
Build your cross-platform service in a week with App Engine
jlugia
232
18k
The World Runs on Bad Software
bkeepers
PRO
72
11k
RailsConf 2023
tenderlove
30
1.3k
Transcript
StreamlitとLangChainを使った 表画像OCRアプリの実装 2024/10/26 機械学習の社会実装勉強会 第40回 熊懐 葵
目次 • 背景 • 課題 • 実装のモチベーション • 実装 •
実装のイメージ • 実装の説明 • 応用例: 財務諸表のOCR • まとめ
背景 データ入力…業界や職種問わず広く行われている基本的な業務 紙ベース・表画像 データ(デジタル) 手入力 事務 • 申請書 • 領収書
医療 • カルテ • 診断書 会計・監査 • 財務資料 • 取引記録 研究 • 実験記録 • 観察記録
課題 作業者の負担・ミス → OCR(光学文字認識)やAIツールを用いた自動化 紙ベース・表画像 データ(デジタル) OCR・AI 課題 • 精度:形が似ている文字の読み取りミス(0とOや1とIなど)
• フォーマット:フォーマットを予め設定する必要がある
モチベーション StreamlitとLangChainを使った表画像OCRアプリを作る LLMを使ったOCRを試したい • 精度:ChatGPTなど、画像読み込みできるLLMがある • フォーマット:プロンプトで柔軟に設定できる UIも整備して、ユーザーが試せるようにしたい • ユーザー目線のフィードバックがもらいやすい
• 課題は性能面なので、ひとまず小規模なもので良い
Streamlit・LangChainとは LangChain • LLMを使ったアプリを作れるフレームワーク • コンポーネントを組み合わせて、柔軟にLLMを構築できる Streamlit • PythonのみでWeb上で動くアプリを作れるフレームワーク •
少ないコードでアプリのプロトタイピングができる StreamlitとLangChainを使った表画像OCRアプリを作る…
Streamlitの使用感 ↓ (main.py) ↓python run main.py (例 http://localhost:8501 で検索)
目次 • 背景 • 課題 • 実装のモチベーション • 実装 •
実装のイメージ • 実装の説明 • 応用例: 財務諸表のOCR • まとめ
表画像OCRアプリのイメージ 表画像 元の画像 表画像を アップロード 読み込んだデータを 手直し CSVファイルを ダウンロード 読み込みデータ
(編集可) 表画像読み込み
実装1: 表画像をアップロード、表示 • 表画像をアップロード ドラック&ドロップ
実装1: 表画像をアップロード、表示 • 表画像を読み込み→サイドバーに表示 • 読み込んだ画像をbase64エンコード アップロードした 表画像が表示される LLMに渡すため byte型→string型に変換
実装2: 表画像をLLMに読み込ませる • LLM: LangChainのLCEL記法 LLMを定義 プロンプト + モデル プロンプト(prompt)
• system プロンプト(テキスト) • human プロンプト(テキスト+画像) モデル(chat) • モデル名 • パラメータ
実装2: 表画像を生成AIに読み込ませる プロンプト • system プロンプト(テキスト) • human プロンプト(テキスト+画像) プロンプト作成用の
クラスを使う
実装2: 表画像を生成AIに読み込ませる プロンプト • system プロンプト(テキスト) • human プロンプト(テキスト+画像) 出力をpandas.Dataframe
形式に指定 データURL ↓ data:[リソースの種類][;base64],{データ}
実装2: 表画像を生成AIに読み込ませる プロンプト モデル • モデル名 • パラメータ 実行(invoke) →
pandas.Dataframeを取得 表画像読み込み・データ生成AI完成
実装3: 読み込んだデータを手直しできるようにする ←比較→ 表画像 Dataframe
実装3: 読み込んだデータを手直しできるようにする • 手打ちで修正できる セルを選択 入力
実装4: CSVファイルにダウンロード • CSV変換・ダウンロードボタン設定 クリックするとダウンロード • Excelなどに直接コピペもできる
表画像OCRアプリのイメージ 表画像 元の画像 表画像を アップロード 読み込んだデータを 手直し CSVファイルを ダウンロード 読み込みデータ
(編集可) 表画像読み込み
応用例:財務諸表 財務諸表を分析する業務がある • 監査法人の監査業務 • 経営・会計コンサルのコンサルティング業務 • M&A関連会社の価値評価・リスク評価 財務諸表とは…会社から公開された財務資料 ↑
社内の帳簿・明細 社内 会計部門 … 外部 財務三表 集計・公開
応用例:財務諸表 試しに貸借対照表を読み込ませてみる 何やらエラーが起こっている
応用例:財務諸表 LLMの出力を調べてみると… 数字につくカンマとセル間のカンマ が混ざってエラーを起こしている プロンプトを改善
応用例:財務諸表 データフレームを取得できた
応用例:財務諸表 データフレームを取得できた 結果↓ 「資産の部」抜け 「前払費用」→ 「繰延税金資産」 数字は全てあっていた
応用例:財務諸表 データフレームを取得できた 結果↓ 丸ごと抜けている
応用例:財務諸表 特に数値部分のOCRの精度が高い 間違え方の原因が掴みにくい (プロンプトでどう指示すれば良い…?) ? 何回か試してみた感想 行名の抜け・誤字 処理時間は少し長い(約10秒)
目次 • 背景 • 課題 • 実装のモチベーション • 実装 •
実装のイメージ • 実装の説明 • 応用例: 財務諸表のOCR • まとめ
表画像OCRアプリの実装 まとめ 客観的な評価はあまりできていない(精度・使いやすさ) ユーザー目線のFBをもらいつつ、機能改善していくことが重要 満足いく精度でない・フォーマットの設定が手間 StreamlitとLangChainを使った表画像OCRアプリを作る • PythonのみでWeb上で動くアプリを実装できた • プロンプトを調整することで表画像を読み込むことができた
ご清聴ありがとうございました
おまけ:PDFの読み込み PDF形式の資料は追加の処理が必要 PDF→Image
おまけ:PDFの読み込み 複数ページ対応 PDF形式の資料は追加の処理が必要
おまけ:ウェイティングリスト • 手書き • 丸囲み 手書きOK 丸囲みNG