静止画の文字認識


 2008-05-19 15:13:29  No: 100721  IP: 192.*.*.*

JPEGファイルに、文字が書かれていますが、
それを認識して、文字をピックアップってできるのでしょうか?

編集 削除
やじゅ  2008-05-19 16:56:06  No: 100722  IP: 192.*.*.*

出来るか出来ないかといったら、出来る
でも、OCRソフト作るのにはライブラリでも無いと難しいな。

日本語OCRソフト「SmartOCR Lite Edition」 
http://www.forest.impress.co.jp/article/2005/11/29/smartocrlite.html

編集 削除
やじゅ  2008-05-19 17:03:54  No: 100723  IP: 192.*.*.*

>日本語OCRソフト「SmartOCR Lite Edition」 
もうDownLoad不可になってた

無料でPDFのOCR「クセロReader ZERO」
http://www.moongift.jp/2007/11/xelo_reader_zero/

編集 削除
魔界の仮面弁士  2008-05-19 18:01:27  No: 100724  IP: 192.*.*.*

Office 2003 / Office 2007 の OCR 機能を使うとか。
http://msdn.microsoft.com/en-us/library/aa167607%28office.11%29.aspx


"Microsoft Office Document Imaging *.* Type Library" を参照設定:

'----------------------
Option Explicit

Private WithEvents D As MODI.Document
Private hasCancelRequest As Boolean

Private Sub Command2_Click()
    hasCancelRequest = True
End Sub

Private Sub Form_Load()
    Me.Caption = App.EXEName
    Text1.Text = "C:\test.jpg"
    Command1.Caption = "OCR"
    Command2.Caption = "キャンセル"
    Command2.Enabled = False
    hasCancelRequest = False

    Combo1.Clear
    Combo1.AddItem "English"
    Combo1.ItemData(0) = miLANG_ENGLISH
    Combo1.AddItem "日本語"
    Combo1.ItemData(1) = miLANG_JAPANESE
    
    Combo1.ListIndex = 0
End Sub

Private Sub D_OnOCRProgress(ByVal Progress As Long, Cancel As Boolean)
    Cancel = hasCancelRequest
    If Cancel Then
        Me.Caption = "キャンセル"
    Else
        Me.Caption = CStr(Progress) & "%"
    End If
End Sub

Private Sub Command1_Click()
    Command1.Enabled = False
    
    Set D = New MODI.Document
    D.Create Text1.Text
    Dim i As MODI.Image
    Set i = D.Images(0)
    Set Picture1.Picture = i.Picture

    Command2.Enabled = True
    hasCancelRequest = False
    On Error Resume Next
    i.OCR Combo1.ItemData(Combo1.ListIndex)
    If Err.Number <> 0 Then
        MsgBox "&H" & Hex(Err.Number) & Err.Description, vbExclamation, Err.Source
    Else
        If Not hasCancelRequest Then
            Me.Caption = App.EXEName
        End If
        Text2.Text = i.Layout.Text
        ShowResult i.Layout.Words
    End If
    Command1.Enabled = True
    Command2.Enabled = False
End Sub

Private Sub ShowResult(ByVal Words As MODI.Words)
    Dim wd As MODI.Word
    Dim w As Integer
    For w = 0 To Words.Count - 1
        Set wd = Words(w)
        List1.AddItem CStr(w + 1) & ":" & wd.Text
        Dim r As MODI.MiRect
        For Each r In wd.Rects
            Dim s As String
            s = "(" & CStr(r.Left) & "," & CStr(r.Top) & ")-"
            s = s & "(" & CStr(r.Right) & "," & CStr(r.Bottom) & ")"
            List1.AddItem vbTab & s
        Next
    Next
End Sub

編集 削除
 2008-05-20 13:40:29  No: 100725  IP: 192.*.*.*

魔界の仮面弁士さん、ソースまで乗せていただきありがとうございます。

OCRという便利なものがあるのですね。

色々調べたのですが、OCRの文字認識は黒だけなのでしょうか?
白字だとダメみたいなので・・・

また、上記のソースの日本語選択だとエラーで落ちてしまいます。

編集 削除
魔界の仮面弁士  2008-05-20 19:15:03  No: 100726  IP: 192.*.*.*

> OCRの文字認識は黒だけなのでしょうか?
分かりません。
開発元の ScanSoft 社、あるいは OEM 供給先のMicrosoft社に
問い合わせてみては如何でしょう。

> 白字だとダメみたいなので
300dpi 程度のグレースケールまたは二値画像にすると良いようです。
画像加工を行うことを検討してみてください。

> 日本語選択だとエラーで落ちてしまいます。
2007 版のヘルプには、
》「Microsoft Office Document Imaging の新機能」
》OCR には、次のサポートが追加されました。
》・東アジア言語のテキストが認識されます。
という表記があるため、2003 版では動作しないかも知れません。

2007 でエラーになるようであれば、下記を試してみてください。
http://support.microsoft.com/kb/944244/ja

編集 削除