65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 LEADTOOLS OCR 增强 Google Drive 搜索

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2013年6月1日

CPOL

3分钟阅读

viewsIcon

26402

downloadIcon

301

使用 LEADTOOLS OCR 增强 Google Drive 搜索

引言

Google Drive 是一项出色的服务,用于存储、组织和共享文件,例如文档、照片和视频。但是,TIFF 和其他光栅图像文件格式很容易丢失,因为 Google Drive 的搜索功能只能做这么多。借助 LEADTOOLS,开发人员可以使用其 OCR SDK 来提取文本,然后将其添加到每个项目的 IndexableTextData。完成此操作后,您可以像搜索 DOC 或 PDF 等任何基于文本的文档一样搜索光栅图像文件。

例如,我有四个普通 TIFF 文件上传到 Google Drive。 这四个文件分别命名为 OCR1 到 OCR4,因此仅根据文件名进行搜索并不是完全有帮助的。

在人眼看来,这些图像只不过是文本,但 Google Drive 仅将这些图像视为光栅数据,并且当我尝试搜索扫描文档内部的内容时,它不会返回任何内容。

如果 Google 没有搜索文件的功能会怎么样? 幸运的是,Google Drive 不会让你失望,并在执行文本搜索时使用每个文档的可自定义“IndexableTextData”元数据。在下面的示例中,我们将展示如何在不修改原始图像的情况下,使 Google Drive 能够根据文本内容找到这些 TIFF 文档。

连接到 Google Drive

此应用程序的第一步是为我们的应用程序启用 Google Drive API,以检索 ClientIDClientSecret。 稍后使用 Google Drive API 上传和修改 TIFF 时,我们将需要这些属性。 最后,我们必须下载 Google 客户端库以在我们的解决方案中引用。 有关设置 .NET 应用程序以与 Google Drive 交互的更多详细信息,请访问 https://developers.google.com/drive/quickstart-cs

在我们的应用程序中,我们将在 WebBrowser 控件中打开用户授权 URI,以便用户可以输入他的 Google 用户名和密码。 用户登录后,我们可以从 WebBrowser 控件的标题中获取授权代码。 现在应用程序已登录并授权访问 Google Drive,我们可以搜索帐户中的所有 TIFF 文件。

FileList fileList = googleDriveHelper.GetFilesList();
 
IEnumerable<File> tiffFilesEnumerable =
fileList.Items.Where(
   file => file.MimeType == "image/tiff" 
   && file.ExplicitlyTrashed != true 
   && file.UserPermission.Role == "owner");
 
foreach (File file in tiffFilesEnumerable)
{
   UpdateIndexableTextData(file);
}

使用 LEADTOOLS OCR

最后,我们可以使用 LEADTOOLS OCR 引擎来获取每个 TIFF 文件及其所有页面中的文本。 创建 IOcrEngineIOcrDocument 后,RecognizeText 函数将返回从页面提取的所有文本的字符串值,然后更新 Google Drive 中的 IndexableTextData 元数据。

void UpdateIndexableTextData(File file)
{
   StringBuilder indexableText = new StringBuilder();
 
   // Get a .NET stream of the document
   using (System.IO.Stream stream = googleDriveHelper.GetFileAsStream(file))
   {
      // Create an instance of LEADTOOLS OCR engine
      using (IOcrEngine ocrEngine =
         OcrEngineManager.CreateEngine(OcrEngineType.Advantage, false))
      {
         // Start the engine using default parameters
         ocrEngine.Startup(null, null, null, null);
 
         // Get the number of pages in the document
         int pageCount;
         using (CodecsImageInfo imageInfo = 
            ocrEngine.RasterCodecsInstance.GetInformation(stream, true))
         {
            pageCount = imageInfo.TotalPages;
         }
 
         // Create OCR Document
         using (IOcrDocument ocrDocument = ocrEngine.DocumentManager.CreateDocument())
         {
            // For each page in the document, recognize it
            for (int page = 1; page <= pageCount; page++)
            {
               ocrDocument.Pages.AddPages(stream, page, page, null);
 
               // Google Drive specific indexable text setup
               indexableText.AppendFormat(
                  "<section attribute=\"Page{0}\">", page);
               // Add the OCR text
               indexableText.Append(ocrDocument.Pages[0].RecognizeText(null));
               indexableText.Append("</section>");
 
               // Clear the document in prepartion for next page
               ocrDocument.Pages.Clear();
            }
         }
      }
   }
 
   file.IndexableText = new File.IndexableTextData();
 
   file.IndexableText.Text = indexableText.ToString();
 
   googleDriveHelper.UpdateFileMetadata(file);
}

现在我们已经处理了 Google Drive 中的所有 TIFF 文件,即使它们在技术上是没有文本数据的光栅图像,也可以通过文档中的文本进行搜索。

下载完整 OCR 示例

您可以下载包含上述功能的完整功能演示。要运行此示例,您需要以下条件:

支持

需要帮助启动和运行此示例吗? 联系我们的支持团队以获得免费技术支持! 如有关于定价或许可的问题,您可以联系我们的销售团队 (sales@leadtools.com) 或致电 704-332-5532。

关于 LEADTOOLS

自 1990 年以来,LEAD Technologies 一直是数字成像工具的主要供应商。其屡获殊荣的 LEADTOOLS 工具包系列帮助开发人员快速轻松地将光栅、文档、医疗、多媒体、矢量和 Internet 成像集成到他们的应用程序中。将 LEADTOOLS 用于您的成像需求使您可以花更多时间在用户界面和特定于应用程序的代码上,从而加快您的开发周期并提高您的投资回报率。

© . All rights reserved.