スクショ、OCR関係

権限キーを追加する

macOS のスクリーン録画許可 (Screen Recording)

これはアプリが画面をキャプチャする場合に必須。

  • キー名(生)NSMicrophoneUsageDescription とかの iOS系じゃない
  • macOS では実はこれ ↓

▶ NSCameraUsageDescription や NSMicrophoneUsageDescription のような専用キーは無い

スクリーン録画には Info.plist キーは不要
ただし 利用する API に応じて説明文が必要

ScreenCaptureKit は Info.plist 許可不要
→ 代わりに macOS システム側の「画面収録」許可ダイアログが自動で出る

🛠 Sandbox をチェックする

  1. Xcode 左ペイン → Project を選択
  2. TARGETS → YourApp
  3. Signing & Capabilities
  4. App Sandbox の項目を確認

以下を必ずチェック:

■ App Sandbox

  • ☑ User Selected File (Read/Write) → スクショ保存する場合
  • Screen Recording → この項目は Xcode 14 以降で自動表示される場合もある

もし “Screen Recording” がない → OK(macOS のシステム許可が自動で出る)

📌 ScreenCaptureKit 使用時に必要な Info.plist のキー

実際には 特別な説明文は不要
でも OCR などで画像を処理するならユーザー安心のため説明文を入れることはある。

例として:

任意

キー名説明
NSPhotoLibraryAddUsageDescriptionスクショをフォトへ保存する場合
NSPhotoLibraryUsageDescription写真へアクセスする場合

💬 Info.plist に手動で追加する例

デバッグコード

スクショ出来ているか判定

負の値が入っていると切り取りが出来ないので入力 rect によりローカル計算が必要かどうか変わる

OCR本体

🟨 画像形式判別

🟧 NSImage → CGImage 変換

🟧 ゴミ文字判定ロジック

指定したディスプレイのスクショ撮影(指定した矩形を切り抜く)

PDFファイルの判別法

🟦 PDF の中身を判別する仕組み

✔ パターン1:テキストベースのPDF
・実際の”テキストオブジェクト”が内部に存在する
・ 選択やコピーができる
・ 軽い(数+KB~数百KB)
・ 文字情報を PDFKit から直接取得できる
→ Vision OCR は不要

✔ パターン2:画像ベースのPDF(スキャンPDF)
・ スキャナーで取り込んだ画像をそのまま貼っている
・ 文字は画像のピクセルに含まれているだけ
・PDFとしては「画像を貼っただけ」
・ 選択できない
・重い(数MB~数+MB)
→ Vision OCR が必要

🟩 Swift(PDFKit)で判別可能

PDFKit の PDFPage にはこういうメソッドがあります:

✔ ① string(PDFPage.string)

PDFページから抽出可能なテキストを返す。

ただし注意点:

  • レイアウトが複雑だったり埋め込みフォントによってはテキストが取得できないこともある(例:変なPDF生成ツール)
  • それでもかなり実用的

✔ ② 画像を抽出してチェックする方法(確実)

ここで Vision の
VNDetectTextRectanglesRequestを使えば
「画像に文字があるか?」も判別できる。

🟩 Swift で PDF を判別するコード例

画像判定(OCR判定)の方が確実なパターンもある

複雑なフォント・アウトライン化(文字が図形になってる)などは
PDFPage.string では取得できないけど、
OCR を通せば文字があることが分かることもある。

コメント

タイトルとURLをコピーしました