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
画像内の “写ってはいけないもの” を 弾きたい / I want to play the ...
Search
koki otaka
May 15, 2026
Technology
82
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
170
管理画面とユーザー機能の調和を取り戻す!~クエリパフォーマンス改善の成功物語~ / Restore harmony between administrative and user functions!
minisera
1
1.1k
Other Decks in Technology
See All in Technology
Amplify Gen2でbackend.tsにCDKを定義する/しない事によるCDKの挙動の違いとユースケース
smt7174
1
490
OpenTelemetryにおけるGoのゼロコード・コンパイル時計装について #fukuokago
quiver
0
200
Amazon Quick 入門!
ysuzuki
2
130
アップデートで何が変わった?デモで学んで使いこなすIBM Bob2.0
muehara
0
220
非定型なドキュメントを効率よくリファクタする 〜えぇ!?仕様書27本の移行が1日で終わったって!?〜
subroh0508
2
610
AIエージェントがあれば技術書なんてすぐ書けるでしょ→無理でした
watany
2
200
どこまでAIに任せるか 〜確率論と決定論の境界決定〜
shukob
0
440
Network Firewallやっていき!
news_it_enj
0
260
生成AI×AWS CDK×AWS FISで"振り返れる"ミニGameDayをつくろう
yoshimi0227
2
530
インシデント事例と パッケージの全量解析に学ぶ ソフトウェアサプライチェーンの守り方 / supply-chain-attack-defense
flatt_security
0
890
SoccerMaster: A Vision Foundation Model for Soccer Understanding
kzykmyzw
0
160
kaonavi Tech Night#1
kaonavi
0
150
Featured
See All Featured
Leo the Paperboy
mayatellez
8
1.9k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
WCS-LA-2024
lcolladotor
0
750
A Soul's Torment
seathinner
6
3.1k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
260
Measuring & Analyzing Core Web Vitals
bluesmoon
9
900
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
970
GraphQLとの向き合い方2022年版
quramy
50
15k
How GitHub (no longer) Works
holman
316
150k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
270
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
300
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