L_OcrDocumentManager_CreateDocument

# include“ltocr.h”

L_LTOCR_APIL_INTEXT_FUNCTIONL_OcrDocumentManager_CreateDocument(documentManager, document, options, fileName)

创建一个新的OCR文件或基于内存的文档句柄。

参数

L_OcrDocumentManagerdocumentManager

OCR引擎文档管理器的句柄。

L_OcrDocument*文档

地址L_OcrDocument变量要用创建的文档句柄进行更新,该句柄可以参与识别和保存操作。

L_OcrCreateDocumentOptions选项

选项,用于控制如何创建或加载文档。

常量L_TCHAR*文件名

文档文件名。该值可以为NULL。

返回

价值 意义
成功 活动很成功。
< 1 发生错误。指返回代码

评论

该方法既可以创建一个文件或基于内存的OCR文档,也可以根据fileName的值和选项加载先前创建的基于文件的文档,如下所示:

要创建一个基于内存的文档,将L_OcrCreateDocumentOptions_InMemory传递给options。没有使用fileName,引擎不会使用磁盘文件来存储文档数据。

要创建一个不会被重用的基于文件的文档,将NULL传递给fileName,将L_OcrCreateDocumentOptions_AutoDeleteFile传递给options。在这种情况下,引擎将在磁盘上创建一个临时文件,用作文档文件的存储。文件被删除时L_OcrDocument被摧毁。请注意,您在fileName中使用自己的文件名以及L_OcrCreateDocumentOptions_AutoDeleteFile,如果该文件存在,引擎将覆盖该文件,并在销毁时自动删除它。

要创建一个基于文件的文档,可以将文件名传递给fileName,并将L_OcrCreateDocumentOptions_None传递给options。在这种情况下,如果这个文件存在,引擎将覆盖它,但不会删除它L_OcrDocument被摧毁。

要重新加载使用前一个选项创建的文档,将相同的文件名传递给fileName,并将l_ocrcreatedocumentoptions_loadeexists传递给options。在这种情况下,引擎将根据文件中的数据重新生成文档。

使用L_OcrDocument_IsInMemory测试文档是基于内存的还是基于文件的L_OcrDocument_GetFileName获取基于文件的文档使用的磁盘文件的名称。这将被设置为传递给fileName或创建临时文件的名称的相同值。

有关内存和基于文件的文档的更多信息,请参阅编程与LEADTOOLS OCR模块- LEAD引擎

使用OCR引擎的典型OCR操作包括启动并使用L_OcrDocumentManager_CreateDocument方法创建OCR文档,然后将页面添加到其中并执行自动或手动分区。一旦完成,L_OcrPage_Recognize在每个页面上调用,以收集识别数据并将其存储在页面内部。在收集到识别数据之后,您可以使用各种L_OcrDocument_SaveL_OcrDocument_SaveXml方法将文档保存为最终格式。

当你用完L_OcrDocument用此方法创建的句柄,应尽快销毁它以释放其资源。摧毁一个L_OcrDocument句柄将释放存储在其内部页列表中的所有页。

笔记

  1. 当你用完L_OcrDocument处理你必须销毁它使用L_OcrDocument_Destroy
  2. 在基于内存的文档销毁中L_OcrDocument句柄将释放文档页面,因此您不应该调用L_OcrPage_Destroy添加的页面,因为OCR文档拥有它们。

必需的dll和库

另请参阅

功能

主题

例子

L_INT L_OcrDocumentManager_CreateDocumentExample (保龄球inMemoryMode){BITMAPHANDLE bitmap = {0};L_OcrEngine ocrEngine = NULL;L_OcrPage ocrPage = NULL;L_OcrDocumentManager = NULL;L_OcrDocument ocrDocument = NULL;//创建引擎实例L_INT retCode = L_OcrEngineManager_CreateEngine(L_OcrEngineType_Advantage, &ocrEngine);如果(retCode == SUCCESS){//使用默认参数启动引擎retCode = L_OcrEngine_Startup(ocrEngine, NULL, OCR_ADVANTAGE_RUNTIME_DIR);如果(retCode != SUCCESS)返回retCode;//加载一个被识别的页面retCode = L_LoadBitmap(MAKE_IMAGE_PATH(L_TEXT(“Ocr1.tif”)),位图,运算符(bitmaphandle), 0, order_rgb, null, null);如果(retCode != SUCCESS)转到清理;//添加图像到OCR页面。将位图的所有权转移到页面retCode = L_OcrPage_FromBitmap(ocrEngine, &ocrPage, &bitmap, L_OcrBitmapSharingMode_AutoFree, NULL, NULL);如果(retCode != SUCCESS)转到清理;//我们有一个有效的页面,位图所有权已经转移。因此,我们不再需要释放位图。//当ocrPage被销毁时,位图将被释放。bitmap.Flags.Allocated = 0;//自动查找页面上文本所在的区域/区域retCode = L_OcrPage_AutoZone(ocrPage, NULL, NULL);如果(retCode != SUCCESS)转到清理;//识别页面//注意:无需调用AutoZone或手动添加区域即可调用Recognize。//引擎会自动检查并自动分区页面。retCode = l_ocrpage_recognition (ocrPage, NULL, NULL);如果(retCode != SUCCESS)转到清理;//获取文档管理器retCode = L_OcrEngine_GetDocumentManager(ocrEngine, &ocrDocumentManager);如果(retCode != SUCCESS)转到清理;//创建一个OCR文档如果(inMemoryMode)retCode = L_OcrDocumentManager_CreateDocument(ocrDocumentManager, &ocrDocument, L_OcrCreateDocumentOptions_InMemory, NULL);其他的retCode = L_OcrDocumentManager_CreateDocument(ocrDocumentManager, &ocrDocument, L_OcrCreateDocumentOptions_AutoDeleteFile, NULL);如果(retCode != SUCCESS)转到清理;//显示创建的OCR文档类型L_BOOL isInMemory = L_FALSE;L_OcrDocument_IsInMemory (ocrDocument &isInMemory);如果(isInMemory)std:: cout < <OCR文档类型:基于内存的其他的{L_TCHAR documentFileName[MAX_PATH] = {0};L_OcrDocument_GetFileName(ocrDocument, documentFileName, _countof(documentFileName));std:: cout < <OCR文档类型:基于文件的<<"文件路径:"< < documentFileName;}//向文档中添加页面。注意:在文件模式下使用OcrDocument时,//将页面添加到文档必须在识别之后。如果OcrPage,//是在被识别之前添加的,没有识别数据将被关联//在OcrDocument中的OcrPage。retCode = L_OcrDocument_AddPage(ocrDocument, ocrPage);如果(retCode != SUCCESS)转到清理;//将页面添加到基于文件的文档中,将捕获识别数据的快照并将其存储在文档中。在这//点,该页不再需要。所以销毁它来释放不再使用的内存L_OcrPage_Destroy (ocrPage);//将句柄设置为NULL,这样我们就不会在清理代码中释放它ocrPage = NULL;//将文档保存为PDF格式retCode = L_OcrDocument_Save(ocrDocument, MAKE_IMAGE_PATH(L_TEXT(“Ocr1.pdf”)), documentformat_pdf, null, null);}清理:如果(bitmap.Flags.Allocated)L_FreeBitmap(位图);如果(ocrPage != NULL)L_OcrPage_Destroy (ocrPage);如果(ocrDocument != NULL)L_OcrDocument_Destroy (ocrDocument);如果(ocrEngine != NULL)L_OcrEngine_Destroy (ocrEngine);返回retCode;}
OCR模块- LEAD引擎C API帮助
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2021领德科技有限公司版权所有。