RealReader SDK サンプル of 株式会社 データデジタル 8

RealReader SDK ラッパークラス呼び出しサンプル

C++ラッパークラスを使用したC++のサンプルです。
#include "stdafx.h"
#include "SROcrLibIO.h"
// 第1引数:イメージファイル名 第2引数:検索文字列
// イメージファイルを認識し、拡張子を[txt]に替えて座標付き結果出力
// 認識結果から検索文字列を検索し見つかった文字列の座標をコンソールに出力
int _tmain(int argc, _TCHAR* argv[])
{
if (argc != 3) {return -1;
}
CSROcrLibIO *ocrLibIO;
try {ocrLibIO = new CSROcrLibIO();
}
catch (...) {return -1;
}
// 割り当てられたserial1,serial2,macIDに変更してください
const int unsigned long serial1 = 0xfeb78c64;
const int unsigned long serial2 = 0x93e4a43b;
const int unsigned long macID = 0xffea0a24;
// COM の初期化
int ret = ocrLibIO->InitializeOcrLib(serial1, serial2, macID);
if (ret != TRUE) {delete ocrLibIO;return ret;
}
char *systemDicPath = "C:\\Program Files\\Common Files\\RealReader\\OCR Library 6.0\\dic";
// 認識辞書を開く
ret = ocrLibIO->OpenRecogDic(systemDicPath);
if (ret != TRUE) {delete ocrLibIO;return ret;
}
CImageProperty *imageProperty;
try {imageProperty = new CImageProperty();
}
catch (...) {ocrLibIO->CloseOcrLib();delete ocrLibIO;return -1;
}
ocrLibIO->ImageProp = imageProperty;
char *imageFilename = argv[1];
// 画像ファイルの読み込み
ret = ocrLibIO->SetImage(imageFilename);
if (ret != TRUE) {delete imageProperty;ocrLibIO->CloseOcrLib();delete ocrLibIO;return ret;
}
printf("画像ファイルの読み込み終了[%s]\n", imageFilename);
// 画像取得のテスト
#if 0
int bufSize = 0;
unsigned char *imgBuffer = ocrLibIO->GetImage(bufSize);
if (bufSize > 0) {FILE *fp = fopen("test.bmp", "wb");if (fp != NULL) {fwrite(imgBuffer, bufSize, 1, fp);fclose(fp);}free(imgBuffer);
}
#endif
OCRProperty *ocrProperty;
try {ocrProperty = new OCRProperty();
}
catch (...) {delete imageProperty;ocrLibIO->CloseOcrLib();delete ocrLibIO;return -1;
}
// 認識属性のセット
ocrLibIO->OcrProp = ocrProperty;
// レイアウト解析を行う
ret = ocrLibIO->ExecLayoutAnalysis();
if (ret != TRUE) {delete imageProperty;delete ocrProperty;ocrLibIO->CloseOcrLib();delete ocrLibIO;return ret;
}
printf("レイアウト解析終了\n");
// 認識を行う
ret = ocrLibIO->ExecRecognition();
if (ret != TRUE) {delete imageProperty;delete ocrProperty;ocrLibIO->CloseOcrLib();delete ocrLibIO;return ret;
}
printf("文字認識終了\n");
// 認識結果から文字列を検索
ret = ocrLibIO->SearchRecogResultSample((unsigned char *)(argv[2]));
printf("文字列検索終了\n");
// 出力ファイル名をフルパスに変換(Word・Excel出力ではフルパスの必要あり)
char saveFullPath[_MAX_PATH];
if( _fullpath( saveFullPath, argv[1], _MAX_PATH ) != NULL ) {printf( "Full path is: %s\n", saveFullPath );
} else {printf( "Invalid path\n" );return -1;
}
#if 1
// 認識結果保存
ret = ocrLibIO->OutputRecogResultSample(saveFullPath);
#else
// COM の機能を使って保存する場合。
ret = ocrLibIO->OutputRecogResultToFile(saveFullPath, (FormatValue)srFormatText, NULL, 0);// Text出力
// ret = ocrLibIO->OutputRecogResultToFile(saveFullPath, (FormatValue)srFormatWord, NULL, 0);// Word出力
#endif
if (ret != TRUE) {delete imageProperty;delete ocrProperty;ocrLibIO->CloseOcrLib();delete ocrLibIO;return ret;
}
printf("認識結果保存終了\n");
// 認識結果クリア
ocrLibIO->ClearRecogResult();
// 終了処理
delete imageProperty;
delete ocrProperty;
ocrLibIO->CloseOcrLib();
delete ocrLibIO;
printf("終了処理終了\n");
printf("リターンで終了します\n");
getchar();
return 0;
}