【Swift】画像から文字(テキスト)を抽出する方法!ImageAnalyzer

この記事からわかること
- Swiftで画像から文字(テキスト)を抽出する方法
- ImageAnalyzerの使い方
index
[open]
\ アプリをリリースしました /
環境
- Xcode:15.0.1
- iOS:17.1
- Swift:5.9
- macOS:Sonoma 14.1
画像から文字(テキスト)を抽出する方法
Swiftで画像から文字(テキスト)を抽出するにはImageAnalyzerを使用します。例えば以下の画像を解析してみました。

取得できた文字列は以下のような感じでした。テキストになっているところは何の問題もなく抽出できていそうですが、記号や小さすぎる文字などはうまく抽出できないようです。
•ll SoftBank
21:12
appdev-room.com
© 76%
Android
Kotlin
この記事からわかること
★ Android Studio/Kotlinで暗号化・複合化を実装する方法
★ Cipherの使い方
公開鍵と秘密鍵を生成するには?
初期化ベクトルとは?
AESやRSAの違い
+
ImageAnalyzerとは
ImageAnalyzer
は画像内のテキストや物体、QRコードなどを検出・認識するためのクラスです。
実装方法
画像から文字列を抽出する場合の実装は以下の通りになります。
public func analyzeImageForText(image: UIImage) async throws -> String {
let analyzer = ImageAnalyzer()
var configuration = ImageAnalyzer.Configuration(.text)
configuration.locales = ["ja"]
do {
let analysis = try await analyzer.analyze(image, configuration: configuration)
return analysis.transcript
} catch {
throw error
}
}
ImageAnalyzer
を使用するにはImageAnalyzer.Configuration
とanalyze
メソッドが重要になります。
ImageAnalyzer.Configuration
ImageAnalyzer.Configuration
では画像内で解析したい対象をImageAnalyzer.AnalysisTypesで指定します。
struct AnalysisTypes {
// QRコードやバーコードなどの機械読み取り可能なコードを画像から分析するオプション。
static let machineReadableCode: ImageAnalyzer.AnalysisTypes
// 画像内のテキストを分析するオプション。
static let text: ImageAnalyzer.AnalysisTypes
// フレームワークが詳細情報を検索できる主題について画像を分析するオプション。
static let visualLookUp: ImageAnalyzer.AnalysisTypes
}
analyzeメソッド
final func analyze(
_ image: UIImage,
configuration: ImageAnalyzer.Configuration
) async throws -> ImageAnalysis
analyze
は非同期で実際に解析を実行するメソッドです。解析が成功するとImageAnalysis
型で結果を取得できます。transcript
プロパティから解析結果の文字列を取得することが可能です。
let analysis = try await analyzer.analyze(image, configuration: configuration)
return analysis.transcript
改行なども含めて以下のように取得することができます。
Optional("•ll SoftBank21:12appdev-room.com© 76%AndroidKotlin\nこの記事からわかること\n★ Android Studio/Kotlinで暗号化・複合化を実装する方法\n★ Cipherの使い方\n公開鍵と秘密鍵を生成するには?\n初期化ベクトルとは?\nAESやRSAの違い\n+")
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。