#TesseractOCR for iOSとは
画像から文字を認識してくれるライブラリです。
CocoaPodから利用できるのも美味しいです。
TesseractOCR for iOS
https://cocoapods.org/?q=tess
サンプルをgithubにあげましたので、参考にしてみてください。
https://github.com/ktanaka117/TesseractTestWithSwift
#導入手順
##1.プロジェクトファイルを作ってPodのインストール
Podfileの中身はこんな感じです。
platform :ios, '7.0' pod 'TesseractOCRiOS', '~> 4.0.0'
##2.言語データファイルをプロジェクトにimportする
ここのリストから使用したい言語データファイルをダウンロードします。
https://code.google.com/p/tesseract-ocr/downloads/list
ダウンロードしたファイルの中にtessdataというディレクトリがあるはずなので、それを以下の画像のようにimportしてください。
##3.文字の入ったテスト用の画像をimportする
今回はこの画像を使いました。
##4.BridgingHeaderを用意する
BridgingHeaderファイルを作成して、そのファイルの中でG8Tesseract.hをimportします。
##5.コードを書く
ViewController.swiftを書き換えていきます。
import UIKit
class ViewController: UIViewController, G8TesseractDelegate {
var imageView: UIImageView = UIImageView()
var label: UILabel = UILabel()
let image = UIImage(named: "OCR-Sample-Japanese")
override func viewDidLoad() {
super.viewDidLoad()
imageView.frame = CGRectMake(0, 0, self.view.frame.size.width, 300)
imageView.contentMode = UIViewContentMode.ScaleAspectFit
imageView.image = UIImage(named: "OCR-Sample-Japanese")
label.frame = CGRectMake(0, 300, self.view.frame.size.width, 200)
label.lineBreakMode = NSLineBreakMode.ByCharWrapping
label.numberOfLines = 0
label.text = "Analyzing..."
self.view.addSubview(imageView)
self.view.addSubview(label)
analyze()
}
func analyze() {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), {
var tesseract = G8Tesseract(language: "jpn")
tesseract.delegate = self
tesseract.image = self.image
tesseract.recognize()
self.label.text = tesseract.recognizedText
println(tesseract.recognizedText)
})
}
func shouldCancelImageRecognitionForTesseract(tesseract: G8Tesseract!) -> Bool {
return false; // return true if you need to interrupt tesseract before it finishes
}
}
##7.オマケ
tesseract.image = self.imageで文字認識させる画像をセットしていますが、ここに入れる画像をCIFilterなどで白黒にしたり、境界線を明確にしてやったりして補正すると以下の画像のように認識率が上がったりします。
#参考サイト
iOSで手軽に文字認識
http://blog.isana.net/2014/08/ios.html