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
450
StreamlitとLangChainを使った表画像OCRアプリの実装
機械学習の社会実装勉強会 第40回 (
https://machine-learning-workshop.connpass.com/event/334075/
) の発表資料です。
熊懐葵
October 26, 2024
Tweet
Share
More Decks by 熊懐葵
See All by 熊懐葵
LangGraphとFlaskを用いた社内資料検索ボットの実装③アプリケーション構築編
aoikumadaki
0
61
LangGraphとFlaskを用いた社内資料検索ボットの実装②Retriever構築編
aoikumadaki
0
140
LangGraphとFlaskを用いた社内資料検索ボットの実装①AIエージェント構築編
aoikumadaki
0
210
LangChainでデータ分析エージェントを作ってみる
aoikumadaki
0
190
AWS LambdaとLangSmithを使った社内レポート添削システムMinervaの実装
aoikumadaki
0
180
Other Decks in Technology
See All in Technology
Exadata Database Service on Cloud@Customer セキュリティ、ネットワーク、および管理について
oracle4engineer
PRO
2
1.5k
Apache Iceberg Case Study in LY Corporation
lycorptech_jp
PRO
0
270
コンピュータビジョンの社会実装について考えていたらゲームを作っていた話
takmin
1
580
Snowflakeの開発・運用コストをApache Icebergで効率化しよう!~機能と活用例のご紹介~
sagara
1
360
ESXi で仮想化した ARM 環境で LLM を動作させてみるぞ
unnowataru
0
160
Goで作って学ぶWebSocket
ryuichi1208
3
2.5k
AI Agent時代なのでAWSのLLMs.txtが欲しい!
watany
2
180
JavaにおけるNull非許容性
skrb
2
2.4k
php-conference-nagoya-2025
fuwasegu
0
140
大規模アジャイルフレームワークから学ぶエンジニアマネジメントの本質
staka121
PRO
3
540
「正しく」失敗できる チームの作り方 〜リアルな事例から紐解く失敗を恐れない組織とは〜 / A team that can fail correctly
i35_267
3
730
偏光画像処理ライブラリを作った話
elerac
1
160
Featured
See All Featured
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Java REST API Framework Comparison - PWX 2021
mraible
29
8.4k
Agile that works and the tools we love
rasmusluckow
328
21k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
Large-scale JavaScript Application Architecture
addyosmani
511
110k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
30
4.6k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.5k
Building Your Own Lightsaber
phodgson
104
6.2k
Visualization
eitanlees
146
15k
How STYLIGHT went responsive
nonsquared
98
5.4k
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