2008.09.17

お手軽 OCR

知らなかったのは私だけでしょうか?
人知れずすごい機能が眠っているもので、
Office をインストールすると、こっそり OCR機能まで一緒に付いて来ていたらしい。

試しに、自分のクライアント Office2003がインストールされている環境で確認してみたところ。
次のようなコードで使うことができた。

OCRTest.vbs(WSH)

'VB(A)では Microsoft Office Document Imaging 11.0 Type Library を参照設定
Dim oDocument ' As New MODI.Document
Dim oImage ' As MODI.Image
Dim oLayout ' As MODI.Layout
Dim oWord ' As MODI.Word
Dim i' As Integer

 Set oDocument = CreateObject("MODI.Document")
 oDocument.Create "C:\work\hogehoge.jpg" ' GIFや Jpeg画像を読ませる
 oDocument.OCR 17 '17:miLANG_JAPANESE ' ここで少々時間がかかる。
 Set oImage = oDocument.Images(0) ' 複数ページのドキュメント対応?1ページ目
 Set oLayout = oImage.Layout
 WScript.Echo oLayout.Text ' 全ての認識文字を出力
 For i = 0 To oLayout.Words.Count - 1
  Set oWord = oLayout.Words.Item(i) ' 実用では Rects → Rect.* で場所を確認すべき
  WScript.Echo "[" & oWord.Text & "]" ' 単語区切りごとに文字出力
 Next
 Set oWord = Nothing
 Set oLayout = Nothing
 Set oImage = Nothing
 oDocument.Close
 Set oDocument= Nothing

試しに ILOVEXのホームページにあるバナーアイコンを幾つか読み込ませてみると、

 banner_m_systemservice.jpg ⇒ 「novex システム開発専用サイトテム開発を一括で請負いまち」
 banner_m_xzinet.jpg ⇒ 「- x 遡 et 例 ect 二 ― 11 日報型ブ口ジェ外管理到」
 banner_ad-folder175.jpg ⇒ 「Windows7 オルダーアクセス権限確肥ツール Ik Au - Folder」
 banner_web_M.gif ⇒ 「Movable Type を使った WEB サイト構築」

(デザインされたバナーを読み込ませること自体に無理がありました。すいません)


ある程度 精度に目をつぶれば、お手軽 OCRに使えるかもしれないですね。

コメント (1)

こんにちは、初めまして
参考にさせていただきまして、このようなコード作ってみました。

Sub MODI()
'
Dim oMODID 'As MODI.Document
Dim oMODII 'As MODI.IMAGE
Dim oMODIIS 'As MODI.Images
Dim oMODIW 'As MODI.Word
Dim oMODIL ' As MODI.Layout

Set oMODID = CreateObject("MODI.DOCUMENT")
'Set oMODII = CreateObject("MODI.IMAGE")
'Set oMODIIS = CreateObject("MODI.Images")
'Set oMODIW = CreateObject("MODI.Word")
Set objFS = CreateObject("Scripting.FilesystemObject")

Dim i ' As Integer
Dim objItem

sdir = "Z:\scan"
ChDir sdir

strList = SearchFolder(sdir) 'フォルダを入れるとフォルダ以下の全ファイルをフルパスで返す関数
                '結城圭介さんのVBSCRIPTサンプル大全ISBN4774127108より

For Each STRLISTITEM In strList

If Right(STRLISTITEM, 4) = ".tif" Then

DM = objFS.GetFile(STRLISTITEM).DateLastModified '最後に編集した時間
DN = Now() - Minute(30)              '30分前
If DM < DN Then                 '30分前以前に作ったファイルのみ対象

oMODID.Create STRLISTITEM ' GIFや Jpeg画像を読ませる

For Each objItem In oMODID.Images
objItem.Rotate 90 '全ページ時計周りに90度回転
Next

oMODID.SaveAs STRLISTITEM & "f" '.tif を.tiffへ

Else
End If
Else
End If

Next


End Sub

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
ichikawa