使用LEADTOOLS OCR增强Google Drive搜索

Google Drive是存储、组织和分析文件如文档、图片和视频等的完美服务。但是,TIFF和其他光栅图像文件很容易被忽略,因为Google Drive的搜索功能非常有限。有了LEADTOOLS,就能使用OCR 文字识别提取每个项的文本,并将它添加到IndexableTextData中。这些完成后,就可以像搜索基于文本的文档如DOC或PDF一样搜索光栅图像文件了。

发布于 2015/05/29 00:00

 

简介

Google Drive是存储、组织和分析文件如文档、图片和视频等的完美服务。但是,TIFF和其他光栅图像文件很容易被忽略,因为Google Drive的搜索功能非常有限。有了LEADTOOLS,就能使用OCR 文字识别提取每个项的文本,并将它添加到IndexableTextData中。这些完成后,就可以像搜索基于文本的文档如DOC或PDF一样搜索光栅图像文件了。

例如,有四个上传到Google Drive的普通TIFF文件。五个文件依次命名为OCR1到OCR4,因此只有基于文件名的搜索能力并不是完全有用的。

image

对于人类的眼睛来说,这些图片只是文本,但是Google Drive只会将这些图像看做普通图片,当我们尝试搜索扫描文件的内部内容时不会返回任何东西。

image

当无法搜索文件时,你的Google会变成什么样子?幸运的是,Google Drive让你不再迷茫,当搜索文本时,使用每个文档自定义的IndexableTextData元数据就可以了。在下面的例子中,我们为您展示了如何使用Google Drive找到基于文本内容的TIFF文档,且无需修改原始图像。

连接到Google Drive

应用程序的第一步是启用我们应用程序的Google Drive,检索ClientID和ClientSecret。在使用Google Drive API上传和修改TIFF文件时,我们会需要这些属性。然后,我们必须下载Google客户端库并在我们的解决方案中引用它。

关于设置.NET应用程序与Google Drive相连接的更多详细信息,

请访问 https://developers.google.com/drive/quickstart-cs

在应用程序中,我们会在WebBrowser中打开用户授权Url,这样用户就可以输入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);
}
image

 

使用LEADTOOLS OCR

 

最后,我们可以使用LEADTOOLS OCR文字识别引擎来获取每个TIFF文件的文本。

创建 IOcrEngine和IOcrDocument后,RecognizeText方法会返回一个字符串值,它是从页面中提取的全部内容,然后在 Google Drive中更新IndexableTextData元数据。

void UpdateIndexableTextData(File file)
{
   StringBuilder indexableText = new StringBuilder();
 
   // 获取文档的一个.NET流
   using (System.IO.Stream stream = googleDriveHelper.GetFileAsStream(file))
   {
      // 创建LEADTOOLS OCR引擎的一个实例
      using (IOcrEngine ocrEngine =
         OcrEngineManager.CreateEngine(OcrEngineType.Advantage, false))
      {
         // 使用默认参数启动引擎
         ocrEngine.Startup(null, null, null, null);
 
         // 获取文档的页数
         int pageCount;
         using (CodecsImageInfo imageInfo = 
            ocrEngine.RasterCodecsInstance.GetInformation(stream, true))
         {
            pageCount = imageInfo.TotalPages;
         }
 
         // 创建OCR文档
         using (IOcrDocument ocrDocument = ocrEngine.DocumentManager.CreateDocument())
         {
            // 识别文档中的每一个页面
            for (int page = 1; page <= pageCount; page++)
            {
               ocrDocument.Pages.AddPages(stream, page, page, null);
 
               // GGoogle Drive特定的可索引文本设置
               indexableText.AppendFormat(
                  "<section attribute=\"Page{0}\">", page);
               // 添加OCR文本
               indexableText.Append(ocrDocument.Pages[0].RecognizeText(null));
               indexableText.Append("</section>");
 
               // 清理文档,为下一页做准备
               ocrDocument.Pages.Clear();
            }
         }
      }
   }
 
   file.IndexableText = new File.IndexableTextData();
 
   file.IndexableText.Text = indexableText.ToString();
 
   googleDriveHelper.UpdateFileMetadata(file);
}

 

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

image

关于其他产品的更多信息,请访问我们的官方网站

欢迎下载免费的全功能评估版SDK,全功能试用版中有这个例子的全部源代码。

同时欢迎您使用评估版期间的免费技术支持

关于葡萄城

葡萄城是专业的软件开发技术和低代码平台提供商,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。葡萄城开发技术始于1980年,40余年来始终聚焦软件开发技术,有深厚的技术积累和丰富的产品线。是业界能够同时赋能软件开发和低代码开发的企业。凭借过硬的产品能力、活跃的用户社区和丰富的伙伴生态,与超过3000家合作伙伴紧密合作,产品广泛应用于信息和软件服务、制造、交通运输、建筑、金融、能源、教育、公共管理等支柱产业。

推荐相关案例
推荐相关资源
关注微信
葡萄城社区二维码

关注“葡萄城社区”

加微信获取技术资讯

加微信获取技术资讯

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态