利用OCR技术优化Google Drive中的图像文件搜索

在数字时代,经常需要在云端存储和共享各种文件,如文档、照片和视频。然而,像TIFF这样的光栅图像文件格式很容易在搜索时丢失,因为Google Drive的搜索功能有限。幸运的是,开发者可以利用LEADTOOLS的OCRSDK提取文本内容,并将其添加到每个项目的IndexableTextData中。这样,光栅图像文件就可以像任何基于文本的文档(如DOC或PDF)一样被搜索。

例如,在Google Drive上传了四个普通的TIFF文件,文件名分别为OCR1到OCR4。如果仅根据文件名进行搜索,这并不十分有帮助。对于人眼来说,这些图像看起来只是文本,但Google Drive只将这些图像视为光栅数据,并且在尝试搜索扫描文档内部的内容时返回无结果。

如果没有搜索文件的方法,Google Drive将会怎样?幸运的是,Google Drive不会让失望,它使用可定制的"IndexableTextData"元数据来执行文本搜索。以下示例展示了如何使Google Drive能够根据文本内容找到这些TIFF文档,而无需修改原始图像。

连接到Google Drive

此应用程序的第一步是为应用程序启用Google Drive API,以便检索ClientID和ClientSecret。稍后将在上传和修改TIFF时使用Google Drive API。最后,必须下载Google客户端库以供解决方案引用。有关设置.NET应用程序以与Google Drive接口的更详细信息,请访问https://developers.google.com/drive/quickstart-cs。

在应用程序中,将在WebBrowser控件中打开用户授权Uri,以便用户可以输入他的Google用户名和密码。用户登录后,可以从WebBrowser控件的标题中获取授权码。

现在应用程序已登录并获得授权访问Google Drive,可以搜索账户中的所有TIFF文件。

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

使用LEADTOOLSOCR

最后,可以使用LEADTOOLSOCR引擎获取每个TIFF文件及其所有页面的文本。创建IOcrEngine和IOcrDocument后,RecognizeText函数将返回页面上提取的所有文本的字符串值,然后更新Google Drive中的IndexableTextData元数据。

C# 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( "
" , page); // Add the OCR text indexableText.Append(ocrDocument.Pages[0].RecognizeText( null )); indexableText.Append( "
" ); // 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文件,它们可以通过文档中的文本进行搜索,即使它们实际上是没有文本数据的光栅图像。

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

  • LEADTOOLSV18(免费60天评估)
  • Visual Studio 2008或更高版本

将附加的ZIP项目解压缩到LEADTOOLS示例目录(例如C:\LEADTOOLS 18\Examples\)

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485