メインコンテンツまでスキップ

モデル選択とロード

サンプルコード

モデルのアスペクト比を用いて OCR 結果の描画範囲を決定するため、OCR 画面に遷移する前にモデルのロードを行うことを推奨します。

1. EdgeVisionAPI の初期化

モデルディレクトリのパスを指定して EdgeVisionAPI を初期化します。

import EdgeOCRSwift

let modelPath = Bundle.main.path(forResource: "models", ofType: "")!
let edgeOCR = try ModelBuilder().fromPath(modelPath).build()

2. モデルの選択

availableModels() で使用可能なモデル一覧を取得し、UID を指定してモデルを選択します。

var model: Model?
for candidate in edgeOCR.availableModels() {
if candidate.getUID() == "model-d320x320" {
model = candidate
}
}

利用可能なモデル

使用可能なモデルはモデルフォルダ内の models.json を参照してください。指定できるモデルは EdgeOCR エンジンのバージョンによって異なります。

一般的なモデルのモデル名には model-d{width}x{height} のようにモデルの解像度が含まれています。解像度が高いほど精度が向上しますが、処理速度が低下します。ユースケースやデバイスのスペックに合わせて選択してください。

モデル UID用途
model-d256x64テキスト認識(低解像度・高速)
model-d256x128テキスト認識
model-d320x160テキスト認識
model-d320x320テキスト認識(標準)
model-d640x640テキスト認識(高解像度・高精度)
model-d{width}x{height}_with_barcodeテキスト認識 + バーコード認識
edgeocr_barcode_defaultバーコード認識
OCR とバーコード認識を同時に使用する場合

テキスト認識とバーコード認識を同時に行いたい場合は、model-d{width}x{height}_with_barcode(例: model-d320x320_with_barcode)を指定してください。テキスト専用モデルや edgeocr_barcode_default ではどちらか一方のみの認識となります。

カスタマイズしたモデルを利用する場合も同様に UID を指定します。

3. モデルのロード

useModel でモデルをロードします。第2引数に ModelSettings を渡すことで、検出フィルタや TextMapper などの設定を行えます。

let modelSettings = ModelSettings()
let modelInfo = try await edgeOCR.useModel(model, settings: modelSettings)

// モデルのアスペクト比を取得(OCR 結果の描画に使用)
let aspectRatio = modelInfo.getAspectRatio()

実装例

アプリ起動時やボタンタップ時にモデルをロードし、完了後に OCR 画面へ遷移するパターンです。

func loadModelAndNavigate(
destination: EdgeOCRSampleKind,
uid: String = "model-d320x320",
modelSettings: ModelSettings = ModelSettings()
) {
Task {
isLoading = true
do {
let info = try await loadModel(
path: modelPath, uid: uid, modelSettings: modelSettings)
aspectRatio = info!.getAspectRatio()
path.append(destination)
} catch {
showModelAlert = true
modelAlertContent = "失敗\n" + error.localizedDescription
}
isLoading = false
}
}

サンプルアプリでは EdgeOCRSample/Models/LoadModel/LoadModel.swiftEdgeOCRSample/Views/Main/MainView.swift に実装されています。

GPU モデルのロード時間について

GPU を使用するモデルは、初回のロード時のみ数秒かかります。ローエンドのデバイスほど時間がかかる傾向があります。 2 回目以降のロードは高速に処理され、アプリを削除しない限りロードに数秒かかることはありません。