Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
画像内の “写ってはいけないもの” を 弾きたい / I want to play the ...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
koki otaka
May 15, 2026
Technology
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
画像内の “写ってはいけないもの” を 弾きたい / I want to play the "things that shouldn't be in the picture"
PHPカンファレンス⼩⽥原 2026登壇資料
https://phpcon-odawara.jp/ja/2026
koki otaka
May 15, 2026
More Decks by koki otaka
See All by koki otaka
管理機能の技術選定: 5年後、現場は耐えたか? / Technology selection for management functions
minisera
0
1.2k
CSとエンジニアをつなぐ新戦略: Embedded CRE 導入事例 / Embedded CRE Case Study
minisera
0
180
管理画面とユーザー機能の調和を取り戻す!~クエリパフォーマンス改善の成功物語~ / Restore harmony between administrative and user functions!
minisera
1
1.2k
Other Decks in Technology
See All in Technology
2026-09-10 【Snowflake World Tour Tokyo 2026】dbt Core と Snowflake で実現する多層的なデータガバナンス / Multi-Layered Data Governance Powered by dbt Core and Snowflake
civitaspo
0
270
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
140
Bet AI Day 2026丨Production-Ready AI Agents — エンタープライズの実務を任せるための設計と運用
layerx
PRO
4
2.7k
From Vanilla Kubernetes to a Batteries-Included Platform: Developer Experience at 1,300+ Clusters
yosshi_
0
650
When Does a Local Qwen Start to Break
morshoto
0
190
AI 駆動 Terraform 開発/SRE_BizReach_MIXI_2
visional_engineering_and_design
3
2k
Code4Lib JAPANカンファレンス2026 開会挨拶 / Code4Lib JAPAN Conference 2026: Opening Remarks
ykiyota
0
270
omasushiというライブラリを作った
polidog
PRO
0
160
Podは生きているのにGoだけが落ちる:GOGCとGOMEMLIMITで追うInvisible OOM Killの謎
tkc66buzz
1
230
GoCon2026 - Open Source, Open World
sanposhiho
2
640
OpenTelemetry eBPF Instrumentationの舞台裏 / Behind the Scenes of OpenTelemetry eBPF Instrumentation
ymotongpoo
3
450
コーディングエージェントでM5Stack系の開発を少し試した時の話 / M5 Japan Tour 2026 Autumn 東京
you
PRO
0
110
Featured
See All Featured
Joys of Absence: A Defence of Solitary Play
codingconduct
1
490
Music & Morning Musume
bryan
47
7.4k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
680
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Exploring anti-patterns in Rails
aemeredith
3
500
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
[SF Ruby Conf 2025] Rails X
palkan
2
1.4k
A Modern Web Designer's Workflow
chriscoyier
698
190k
The agentic SEO stack - context over prompts
schlessera
0
910
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Transcript
画像内の “写ってはいけないもの” を 弾きたい PHPカンファレンス⼩⽥原 2026 @minisera
4 SmartBank, Inc. αʔόʔαΠυΤϯδχΞ ΈʹͤΒ / minisera @oh_minisera @minisera ʲࠓͷʳ
ը૾όϦσʔγϣϯͰࢼߦࡨޡͨ͠
導⼊ 画像アップロード、よくありますよね ファイル形式 JPEG, PNG など 対応形式 ファイルサイズ 5MB以下かどうか サイズの上限
縦横サイズ 画像の解像度が 基準を満たすか バリデーションたち:
導⼊ 画像の「中⾝」、⾒てますか? ͋ΔҰ͕݅ى͖Δ·Ͱݟ͓ͯΒͣ…
導⼊ 実際に起きた問題: ユーザーに決済情報を添付いただく際に クレジットカード番号が写った画像がアップロード
導⼊ “写ってはいけないもの” 弾きたい
OCRの試み OCRでクレカ番号を読み取る 画像 OCR テキスト パターン 検出
OCRの試み ͳΜ͔͍͚ͦ͏ʂ
OCRの試み 現実は⽢くなかった 斜め撮り ⽂字化け 影‧ブレ 認識不能 OCR結果: 4S2B 0I2 34S6
?890 正解: 4528 0123 4567 8901 ࢀߟը૾ ΛషΔ
OCRの試み ผͷ࡞ઓΛߟ͑Δ OCRɺୀ "
発想の転換 ⽂字ではなく「モノ」で判断する Before 「番号を読み取る」 After 「カードっぽいのが 写っているか判定」
発想の転換 AWS Rekognition DetectLabels Λ͏ ࢀߟ: https://docs.aws.amazon.com/ja_jp/rekognition/latest/dg/labels-detect-labels-i Response: { "Labels":
[ { "Name": “Credit Card”, "Confidence": 95.2364013671875, "Instances": [ { "BoundingBox": { "Width": 0.26779675483703613, "Height": 0.8562285900115967, "Left": 0.3604024350643158, "Top": 0.09245597571134567, }
ൃͷస ศརʂউͬͨʂ
チューニングの旅 検出漏れが多々 # 縦向きカード 89.1% 閾値 90% スルー 影ありカード 87.0%
閾値 90% スルー Response: { "Labels": [ { "Name": “Credit Card”, "Confidence": 95.2364013671875
チューニングの旅 ⼀律の閾値ではなく「複合条件」 ⾼信頼度パターン CreditCard 80%以上 補助条件なし そのまま検出 BBox検出パターン CreditCard 68%以上
カードの⾯積が 画像の⼤部分である スクショパターン CreditCard 56%以上 εΫγϣ૬ͷ ϥϕϧが共存
νϡʔχϯάͷཱྀ ͜ΕͰʂ ΊͰͨ͠ΊͰͨ͠
伏線回収 …まだ漏れるケースがあった カードデザインのないバーチャルカードのスクショ • ただの数字の羅列 • 物体認識では⾒つけられない OCRͷదੑ͋ΔͷͰ…?
OCR、再登場 「補完レイヤー」として復活
最終構成 ମೝࣝ + OCR の⼆層構造 ⼊⼒画像 層1 ମೝࣝ クレジットカードっぽいものか検証 層2
OCR OCR + ΫϨΧ൪߸͔Ͳ͏͔検証 どちらかで検出
νϡʔχϯάͷཱྀ ͜ΕͰ”ຊʹ”ʂ ※本当です
⼀度捨てた技術も 組み合わせれば武器になる
まとめ 3つの学び 問題の捉え⽅を変える 「番号を読む」→「カードが写っているか」。問いを変えるとシンプルな解に辿り着く 銀の弾丸はない ⼀度ボツにした技術も補完レイヤーとして活きる。組み合わせも考える ӡ༻͠ͳ͕Β磨く ͲΜͳΠϯϓοτ͕དྷΔ͔༧ଌ͕͍࣌͠ɺӡ༻͠ͳ͕Βݕग़ਫ਼ΛߴΊ͍ͯ͘
まとめ ͝ਗ਼ௌありがとうございました! クレカ番号の判定の詳細は是⾮ブログを! https://blog.smartbank.co.jp/entry/2026/01/08/100000 画像内の“写ってはいけないもの”を弾きたい @minisera
None