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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
熊懐葵
October 26, 2024
Technology
970
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
StreamlitとLangChainを使った表画像OCRアプリの実装
機械学習の社会実装勉強会 第40回 (
https://machine-learning-workshop.connpass.com/event/334075/
) の発表資料です。
熊懐葵
October 26, 2024
More Decks by 熊懐葵
See All by 熊懐葵
AI時代のインターン研修再設計 コーディング力から課題創出・業務遂行力へ
aoikumadaki
0
170
Claude Codeで進めるAWSリソースのTerraform移行
aoikumadaki
0
130
n8nで定期成果報告の資料づくりを自動化する
aoikumadaki
0
280
LangGraphとFlaskを用いた社内資料検索ボットの実装④GithubRetriever構築編
aoikumadaki
0
130
LangGraphとFlaskを用いた社内資料検索ボットの実装③アプリケーション構築編
aoikumadaki
0
180
LangGraphとFlaskを用いた社内資料検索ボットの実装②Retriever構築編
aoikumadaki
0
270
LangGraphとFlaskを用いた社内資料検索ボットの実装①AIエージェント構築編
aoikumadaki
0
500
LangChainでデータ分析エージェントを作ってみる
aoikumadaki
0
390
AWS LambdaとLangSmithを使った社内レポート添削システムMinervaの実装
aoikumadaki
0
420
Other Decks in Technology
See All in Technology
[RSJ26] Hierarchy-Aware Multimodal Retrieval-Augmented Generation for Embodied Question Answering
keio_smilab
PRO
1
160
指示待ちから変化に応じるClaude Codeへ!~環境からAgentへの帰り道を作る~
gotalab555
9
1.8k
[RSJ26] AnoleVLA: Lightweight Vision-Language-Action Model with Deep State Space Models for Mobile Manipulation
keio_smilab
PRO
0
120
20260903 Tokyo Jazug Night #62 | Azure エンジニアよ、 その環境は本当にセキュアか?
olivia_0707
1
540
Hub & Spoke 環境のネットワークルーティングを分解してみる
tsuyataku
1
510
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
25k
AI駆動開発をチームに根付かせる - 「1行も書かない」チームがHarnessを育てた1年 -
kenichirokimura
6
3.7k
Bet AI Day 2026丨バクラク Autopilot、業務システムの再設計
layerx
PRO
1
850
AIで開発は速くなったのに、なぜ現場は楽にならないのか 〜あなたの組織のボトルネックを突き止めるワークショップ〜
jacopen
1
210
プロダクトエンジニアに必要な「いい感じ」に作る能力 〜たくさん作れる時代に、どこまで作るかの決め方〜
jnishime_dresscode
2
870
Bet AI Day 2026丨Agentは、「金融」という巨大産業の何を変えられるのか
layerx
PRO
0
560
KAEN Company Deck
kaen
PRO
0
260
Featured
See All Featured
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
Exploring anti-patterns in Rails
aemeredith
3
490
4 Signs Your Business is Dying
shpigford
187
23k
Done Done
chrislema
186
16k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
850
Building AI with AI
inesmontani
PRO
1
1.2k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
460
Deep Space Network (abreviated)
tonyrice
0
280
The browser strikes back
jonoalderson
0
1.6k
New Earth Scene 8
popppiees
3
2.5k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
180
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