おおぞらのとんび

2010/06/28(月)16:42

Excel VBA 画像のトリミングとOCR 1

このプログラムは『Excel2003』以降で使用できます。 このプログラムについて  このプログラムは画像をトリミング(切り取り)し、  その画像をOCR(文字変換)するソフトです。  ただし、トリミング後の図に含まれる文字数が5文字未満だと、  日本語変換が「OCRエラー」になる可能性があります。 まず初めにライブラリの参照設定をすること  ・メニューの ツール > マクロ > Visual Basic Editor でVisualBasic画面を起動  ・ VisualBasic画面の メニューの ツール > 参照設定で参照設定を開く  ・□Microsoft Office Document Imaging 11.0 Type Library ←にチェック つづけてVBAでフォームを作成  ・ VisualBasic画面の メニューの 挿入 > ユーザーフォーム  (フォームは挿入するだけでOK)  シートの操作  ・どのシートでも良いので「設定」とシート名をつける。  ・「設定」シートの中にボタンを作成する。(マクロ起動用) 設定シートについて  セルE2:OCR実行中にOCR解析中の文字が入力されます。  セルC3:画像のフォルダのパスを入力。      空白の場合はこのExcelと同じフォルダをデフォルトの参照場所とします。  セルB5~I5:この行は見出しです。とりあえず何か入力してください。       (何か入力されてれば問題ない)  セルB6:取得したい場所名など自由に入力してください。      (ここに何か文字が入力されてれば下記7項目を取得する)  セルC6:OCR判定の型です。「英数字」「日本語」のどちらかを記入して下さい。  セルD6:トリミングの上位置(上から記入ピクセルまでを削除)  セルE6:トリミングの下位置(下から記入ピクセルまでを削除)  セルF6:トリミングの左位置(左から記入ピクセルまでを削除)  セルG6:トリミングの右位置(右から記入ピクセルまでを削除)  セルH6:結果を記入するシート名  セルI6:結果を記入するセル番地。(セルH6に記入したシート上) コードのコピペ  ・メニューの ツール > マクロ > Visual Basic Editor でVisualBasic画面を起動  ・ブログのコードをコピーし 設定シート へ貼り付け。 トリミングのサイズを調べる方法  ・まずは一度、[トリミング&OCR実行]ボタンで実行し元画像を選択して下さい。   (結果は気にせずに)  ・このExcelと同フォルダに「image1.bmp」が作成されます。  ・このExcelを一度閉じて、新たにExcelを開きます。  ・メニューの 挿入 > 図 > ファイル このExcelと同フォルダの「image1.bmp」を選択。  ・メニューの ツール > マクロ > 新しいマクロの記述。  ・図形のトリミングを手動で行う。  ・マクロの停止をクリック。  ・メニューの ツール > マクロ > マクロ 記録したマクロを選択し編集。  ・Selection.ShapeRange.PictureFormat.CropTop の値がCropTopになる。  ・同じようにCropBottom、CropLeft、CropRightの値を記入する。  ※1ピクセル=0.75 なので 0.75で割り切れる数字を入力 現在確認されている不具合  ・実行後に、図の取り込みや、オートシェープを実行するとフリーズする。   (MODI.DocumentのCreateを実行後から)   対策が思いつかないので、使用後は一度Excelを閉じた方がいい。 開発中のメモ  ・一度フォームに取り込みしてから保存してるのは、図を安定させるため。  ・あるビットマップでは解像度が71dpiだったのでフォームに取り込みしてから   保存すると96dpiで安定した。  ・図をトリミング無しでOCRして、レイアウト情報から場所別に出力も考えたが、   日本語で全部OCRすると数字部の解析率が悪くなる。  ・数字部は「英数字」でOCRした方が解析率がかなり高かったので、   トリミング無しは断念した。  (レイアウト情報は取得可能。参考までに設定の隣に出力させてる)  ・フォームに、スクロールバー付のフレーム貼り付けて、   中にイメージ貼り付け図を挿入し、フレームの縦横サイズを   テキストボックスの値入力で変更できるようにする。   そうすれば下記の方法でトリミングサイズやレイアウトを   取得できると思うが面倒なので断念。   1.現在表示されてる座標をスクロールバーから取得   2.フレームのサイズを取得

続きを読む

総合記事ランキング

もっと見る