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

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

この記事からわかること

  • Swift画像から文字(テキスト)を抽出する方法
  • ImageAnalyzer使い方

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

画像から文字(テキスト)を抽出する方法

Swiftで画像から文字(テキスト)を抽出するにはImageAnalyzerを使用します。例えば以下の画像を解析してみました。

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

取得できた文字列は以下のような感じでした。テキストになっているところは何の問題もなく抽出できていそうですが、記号や小さすぎる文字などはうまく抽出できないようです。

•ll SoftBank
21:12
appdev-room.com
© 76%
Android
Kotlin
この記事からわかること
★ Android Studio/Kotlinで暗号化・複合化を実装する方法
★ Cipherの使い方
公開鍵と秘密鍵を生成するには?
初期化ベクトルとは?
AESやRSAの違い
+

ImageAnalyzerとは

公式リファレンス: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.Configurationanalyzeメソッドが重要になります。

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メソッド

公式リファレンス: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+")

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index