Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
StreamlitとLangChainを使った表画像OCRアプリの実装
Search
熊懐葵
October 26, 2024
Technology
3
830
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
70
n8nで定期成果報告の資料づくりを自動化する
aoikumadaki
0
190
LangGraphとFlaskを用いた社内資料検索ボットの実装④GithubRetriever構築編
aoikumadaki
0
81
LangGraphとFlaskを用いた社内資料検索ボットの実装③アプリケーション構築編
aoikumadaki
0
130
LangGraphとFlaskを用いた社内資料検索ボットの実装②Retriever構築編
aoikumadaki
0
210
LangGraphとFlaskを用いた社内資料検索ボットの実装①AIエージェント構築編
aoikumadaki
0
430
LangChainでデータ分析エージェントを作ってみる
aoikumadaki
0
320
AWS LambdaとLangSmithを使った社内レポート添削システムMinervaの実装
aoikumadaki
0
350
Other Decks in Technology
See All in Technology
1人1サービス開発しているチームでのClaudeCodeの使い方
noayaoshiro
2
390
ディメンショナルモデリングを支えるData Vaultについて
10xinc
1
110
AWS re:Invent 2025で見たGrafana最新機能の紹介
hamadakoji
0
420
AI時代の新規LLMプロダクト開発: Findy Insightsを3ヶ月で立ち上げた舞台裏と振り返り
dakuon
0
210
年間40件以上の登壇を続けて見えた「本当の発信力」/ 20251213 Masaki Okuda
shift_evolve
PRO
1
140
Power of Kiro : あなたの㌔はパワステ搭載ですか?
r3_yamauchi
PRO
0
180
mairuでつくるクレデンシャルレス開発環境 / Credential-less development environment using Mailru
mirakui
5
540
2025-12-18_AI駆動開発推進プロジェクト運営について / AIDD-Promotion project management
yayoi_dd
0
110
ActiveJobUpdates
igaiga
1
140
初めてのDatabricks AI/BI Genie
taka_aki
0
200
5分で知るMicrosoft Ignite
taiponrock
PRO
0
390
regrowth_tokyo_2025_securityagent
hiashisan
0
250
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Faster Mobile Websites
deanohume
310
31k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.7k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
Side Projects
sachag
455
43k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Statistics for Hackers
jakevdp
799
230k
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