# include“ltocr.h”
L_LTOCR_APIL_INTEXT_FUNCTIONL_OcrPage_GetDeskewAngle(页面,价值)
被倾斜的角度L_OcrPage在度。
处理到OCR页面。
与页面地址L_INT变量更新抗扭斜角度。
价值 | 意义 |
---|---|
成功 | 函数是成功的。 |
< 1 | 一个错误发生。指返回代码。 |
得到这个页面的倾斜的角度表达了十度。
使用L_OcrPage_AutoPreprocess与L_OcrAutoPreprocessPageCommands_Deskew自动抗扭斜位图之前调用的页面L_OcrPage_Recognize。这可能提高形象开始前的质量认可。
如果位图扭曲,L_OcrPage_GetDeskewAngle将返回角度需要抗扭斜位图的页面,如果你的电话L_OcrPage_AutoPreprocess在页面上,所有的后续调用L_OcrPage_GetDeskewAngle将返回0自位图不是倾斜的。因此,您必须使用L_OcrPage_GetDeskewAngle之前调用L_OcrPage_AutoPreprocess。
使用L_OcrPage_GetAutoPreprocessValues获得值累计预处理应用L_OcrPage。
必需的dll和库
L_INT L_OcrPage_GetDeskewAngleExample ()
{
BITMAPHANDLE位图= {0};
L_OcrEngine ocrEngine =零;
L_OcrPage ocrPage =零;
L_OcrDocumentManager ocrDocumentManager =零;
L_OcrDocument ocrDocument =零;
/ /创建一个实例的引擎
L_INT retCode = L_OcrEngineManager_CreateEngine (L_OcrEngineType_Advantage &ocrEngine);
如果(retCode = =成功)
{
/ /启动引擎使用默认参数
retCode = L_OcrEngine_Startup (ocrEngine, NULL, OCR_ADVANTAGE_RUNTIME_DIR);
如果(retCode ! =成功)
返回retCode;
/ /加载一个页面被认可
retCode = L_LoadBitmap (MAKE_IMAGE_PATH (L_TEXT (“Clean.tif”)),位图,运算符(BITMAPHANDLE), 0 ORDER_RGB空,空);
如果(retCode ! =成功)
转到清理;
/ /添加一个图像OCR页面。不转移所有权的位图页面
retCode = L_OcrPage_FromBitmap (ocrEngine &ocrPage,位图,L_OcrBitmapSharingMode_None, NULL, NULL);
如果(retCode ! =成功)
转到清理;
L_INT deskewAngle = 0;
L_OcrPage_GetDeskewAngle (ocrPage &deskewAngle);
如果(deskewAngle > 0)
L_DeskewBitmap(位图,NULL, RGB (0, 0, 0), DSKW_PROCESS | DSKW_RESAMPLE);
L_INT rotateAngle = 0;
L_OcrPage_GetRotateAngle (ocrPage &rotateAngle, NULL);
如果(rotateAngle > 0)
L_RotateBitmap(位图,rotateAngle ROTATE_RESAMPLE, RGB (0, 0, 0));
/ /设置位图的页面我们纠正后其抗扭斜和旋转角度
retCode = L_OcrPage_SetBitmap (ocrPage、位图、L_TRUE);
如果(retCode ! =成功)
转到清理;
/ /自动找到地区/区域在页面上文本的位置
retCode = L_OcrPage_AutoZone (ocrPage,空,空);
如果(retCode ! =成功)
转到清理;
/ /识别页面
/ /注意:识别可以被称为没有调用AutoZone或手动添加区域。
/ /引擎将自动检查和auto-zones页面。
retCode = L_OcrPage_Recognize (ocrPage,空,空);
如果(retCode ! =成功)
转到清理;
/ / document manager
retCode = L_OcrEngine_GetDocumentManager (ocrEngine &ocrDocumentManager);
如果(retCode ! =成功)
转到清理;
/ /创建文件的OCR文档
retCode = L_OcrDocumentManager_CreateDocument (ocrDocumentManager &ocrDocument L_OcrCreateDocumentOptions_AutoDeleteFile, NULL);
如果(retCode ! =成功)
转到清理;
/ /将页面添加到文档中。
retCode = L_OcrDocument_AddPage (ocrDocument ocrPage);
如果(retCode ! =成功)
转到清理;
/ /将页面添加到基于文件的文档将乱射的识别数据并将其存储在文档中。在这
/ /点,不再需要的页面。所以破坏它释放内存不再使用了
L_OcrPage_Destroy (ocrPage);
/ /设置处理为零所以我们不免费清理代码
ocrPage =零;
/ /保存文件为PDF
retCode = L_OcrDocument_Save (ocrDocument MAKE_IMAGE_PATH (L_TEXT (“Ocr1.pdf”))、DOCUMENTFORMAT_PDF空,空);
}
清理:
如果(bitmap.Flags.Allocated)
L_FreeBitmap(位图);
如果(ocrPage ! = NULL)
L_OcrPage_Destroy (ocrPage);
如果(ocrDocument ! = NULL)
L_OcrDocument_Destroy (ocrDocument);
如果(ocrEngine ! = NULL)
L_OcrEngine_Destroy (ocrEngine);
返回retCode;
}