原創(chuàng)|使用教程|編輯:龔雪|2015-07-21 10:30:48.000|閱讀 317 次
概述:Google Drive是存儲、組織和分析文件如文檔、圖片和視頻等的完美服務(wù)。但是,TIFF和其他光柵圖像文件很容易被忽略,因?yàn)镚oogle Drive的搜索功能非常有限。有了LEADTOOLS,就能使用OCR 文字識別提取每個(gè)項(xiàng)的文本,并將它添加到IndexableTextData中。這些完成后,就可以像搜索基于文本的文檔如DOC或PDF一樣搜索光柵圖像文件了。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
Google Drive是存儲、組織和分析文件如文檔、圖片和視頻等的完美服務(wù)。但是,TIFF和其他光柵圖像文件很容易被忽略,因?yàn)镚oogle Drive的搜索功能非常有限。有了LEADTOOLS,就能使用OCR 文字識別提取每個(gè)項(xiàng)的文本,并將它添加到IndexableTextData中。這些完成后,就可以像搜索基于文本的文檔如DOC或PDF一樣搜索光柵圖像文件了。
例如,有四個(gè)上傳到Google Drive的普通TIFF文件。五個(gè)文件依次命名為OCR1到OCR4,因此只有基于文件名的搜索能力并不是完全有用的。
對于人類的眼睛來說,這些圖片只是文本,但是Google Drive只會將這些圖像看做普通圖片,當(dāng)我們嘗試搜索掃描文件的內(nèi)部內(nèi)容時(shí)不會返回任何東西。
當(dāng)無法搜索文件時(shí),你的Google會變成什么樣子?幸運(yùn)的是,Google Drive讓你不再迷茫,當(dāng)搜索文本時(shí),使用每個(gè)文檔自定義的IndexableTextData元數(shù)據(jù)就可以了。在下面的例子中,我們?yōu)槟故玖巳绾问褂肎oogle Drive找到基于文本內(nèi)容的TIFF文檔,且無需修改原始圖像。
應(yīng)用程序的第一步是啟用我們應(yīng)用程序的Google Drive,檢索ClientID和ClientSecret。在使用Google Drive API上傳和修改TIFF文件時(shí),我們會需要這些屬性。然后,我們必須下載Google客戶端庫并在我們的解決方案中引用它。
關(guān)于設(shè)置.NET應(yīng)用程序與Google Drive相連接的更多詳細(xì)信息,
請?jiān)L問 。
在應(yīng)用程序中,我們會在WebBrowser中打開用戶授權(quán)Url,這樣用戶就可以輸入Google的用戶名和密碼。當(dāng)用戶登錄后,我們可以從WebBrowser控件中獲取授權(quán)信息。現(xiàn)在應(yīng)用程序登錄并授權(quán)訪問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文字識別引擎來獲取每個(gè)TIFF文件的文本。
創(chuàng)建 IOcrEngine和IOcrDocument后,RecognizeText方法會返回一個(gè)字符串值,它是從頁面中提取的全部內(nèi)容,然后在 Google Drive中更新IndexableTextData元數(shù)據(jù)。
void UpdateIndexableTextData(File file) { StringBuilder indexableText = new StringBuilder(); // 獲取文檔的一個(gè).NET流 using (System.IO.Stream stream = googleDriveHelper.GetFileAsStream(file)) { // 創(chuàng)建LEADTOOLS OCR引擎的一個(gè)實(shí)例 using (IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.Advantage, false)) { // 使用默認(rèn)參數(shù)啟動引擎 ocrEngine.Startup(null, null, null, null); // 獲取文檔的頁數(shù) int pageCount; using (CodecsImageInfo imageInfo = ocrEngine.RasterCodecsInstance.GetInformation(stream, true)) { pageCount = imageInfo.TotalPages; } // 創(chuàng)建OCR文檔 using (IOcrDocument ocrDocument = ocrEngine.DocumentManager.CreateDocument()) { // 識別文檔中的每一個(gè)頁面 for (int page = 1; page <= pageCount; page++) { ocrDocument.Pages.AddPages(stream, page, page, null); // GGoogle Drive特定的可索引文本設(shè)置 indexableText.AppendFormat( "<section attribute=\"Page{0}\">", page); // 添加OCR文本 indexableText.Append(ocrDocument.Pages[0].RecognizeText(null)); indexableText.Append("</section>"); // 清理文檔,為下一頁做準(zhǔn)備 ocrDocument.Pages.Clear(); } } } } file.IndexableText = new File.IndexableTextData(); file.IndexableText.Text = indexableText.ToString(); googleDriveHelper.UpdateFileMetadata(file); }
現(xiàn)在我們已經(jīng)處理了Google Drive中的所有TIFF文件,即使它們在技術(shù)上是沒有文本數(shù)據(jù)的圖片,也可以通過文檔中的搜索來定位。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn