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
220
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を用いた社内資料検索ボットの実装①AIエージェント構築編
aoikumadaki
0
28
LangChainでデータ分析エージェントを作ってみる
aoikumadaki
0
140
AWS LambdaとLangSmithを使った社内レポート添削システムMinervaの実装
aoikumadaki
0
120
Other Decks in Technology
See All in Technology
【ASW21-01】STAMPSTPAで導き出した課題に対する対策立案手法の提案
hianraku9498
0
440
Autonomous Database サービス・アップデート (FY25)
oracle4engineer
PRO
0
230
振る舞い駆動開発(BDD)における、テスト自動化の前に大切にしていること #stac2024 / BDD formulation
nihonbuson
2
280
AWS re:Invent 2024登壇資料(GBL206-JA: Unleashing the power of generative AI on AWS for your business)
minorun365
PRO
4
150
アジャイルテストの4象限で考える プロダクト開発の品質への向き合い方
nagano
1
280
プロダクトマネージャーは 事業責任者の夢をみるのか pmconf2024
gimupop
1
6.7k
Engineer Recruting Deck
siva_official
PRO
1
3.3k
pmconf2024_UPSIDER
upsider_tech
0
5.6k
.NET のUnified AI Building Blocks 入門...!
okazuki
0
170
まだチケットを手動で書いてるの?!GitHub Actionsと生成AIでチケットの作成を自動化してみた話 / 20241207 Yoshinori Katayama
shift_evolve
1
280
Explain EXPLAIN
keiko713
9
2.3k
Empowering Customer Decisions with Elasticsearch: From Search to Answer Generation
hinatades
PRO
0
250
Featured
See All Featured
Practical Orchestrator
shlominoach
186
10k
GraphQLとの向き合い方2022年版
quramy
44
13k
Fireside Chat
paigeccino
34
3.1k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.3k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
48
2.1k
Rails Girls Zürich Keynote
gr2m
94
13k
Optimizing for Happiness
mojombo
376
70k
Site-Speed That Sticks
csswizardry
1
130
Visualization
eitanlees
145
15k
Become a Pro
speakerdeck
PRO
25
5k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
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