翻譯|使用教程|編輯:莫成敏|2019-07-24 10:34:43.213|閱讀 231 次
概述:同時接收光柵和可搜索的PDF文件是一件非常讓人頭疼的事情,特別是對于那些每天從客戶那里獲取這些文件的人來說。LEADTOOLS OCR和PDF SDK使開發人員更容易檢查這些文件是否需要OCR。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
LEADTOOLS中的高級OCR SDK技術是多方面的,可以作為獨立功能使用,也可以作為表單識別、支票識別和文檔轉換等更先進技術的驅動力。程序員自己可以編寫三行代碼來將圖像轉換為可搜索文本的文檔。
LEADTOOLS OCR Module - LEAD Engine(原Advantage Engine )增加了將光學字符識別(OCR)和智能字符識別(ICR)技術合并到應用程序中的一些方法,并且包含用于開發穩健的,高性能的和可擴展的圖像識別方案所需要的一切技術。LEADTOOLS OCR Module - LEAD Engine可與LEADTOOLS SDKs在文檔和醫療產品方面集成在一起使用。
點擊下載LEADTOOLS OCR Module - LEAD Engine試用版
同時接收光柵和可搜索的PDF文件是一件非常讓人頭疼的事情,特別是對于那些每天從客戶那里獲取這些文件的人來說。LEADTOOLS OCR和PDF SDK使開發人員更容易檢查這些文件是否需要OCR。
在PDF中有三種不同的對象類型:
文本
長方形
圖片
這篇文章,將向您展示如何從存儲的PDF中檢查所有對象類型,然后計算是否需要使用OCR SDK將PDF轉換為可搜索的PDF。
在應用程序啟動時,您需要啟動OCR引擎,以防您不得不啟動OCR任何文件。引擎啟動后,我們將要查看指定文件夾中的每個PDF。對于找到的每個文件,將其加載為PDFDocument并使用ParsePages解析頁面,同時設置PDFParseOptions為僅查看對象。
查看完所有對象后,將所有非文本對象與找到的所有對象進行比較。如果超過10%的對象是非文本對象,那么可以假設大部分PDF都是不可搜索的,并且您將要對文檔進行OCR處理。
string[] pdfFolder = Directory.GetFiles(@"D:?temp?PDFs", "*.pdf");// Start OCR Engineusing (IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD, false)){ ocrEngine.Startup(null, null, null, @"C:?LEADTOOLS 20?Bin?Common?OcrLEADRuntime"); foreach (string file in pdfFolder) { Console.WriteLine($"Reading {file}"); using (PDFDocument document = new PDFDocument(file)) { PDFParsePagesOptions options = PDFParsePagesOptions.Objects; document.ParsePages(options, 1, -1); int totalPdfObjects = 0; int totalNonTextObjects = 0; foreach (PDFDocumentPage page in document.Pages) { int i = page.PageNumber; IList<PDFObject> objects = page.Objects; foreach (PDFObject obj in objects) { totalPdfObjects++; if (obj.ObjectType != PDFObjectType.Text) { totalNonTextObjects++; } } } double percentage = ((double)totalNonTextObjects / totalPdfObjects); if (percentage > .1) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine($"Performing OCR on {file}?n"); using (RasterCodecs codecs = new RasterCodecs()) using (RasterImage image = codecs.Load(file, 0, CodecsLoadByteOrder.RgbOrGray, 1, -1)) DoOCR(image, ocrEngine, file); } else { Console.WriteLine($"{file} does not need OCR?n"); } } Console.ForegroundColor = ConsoleColor.White; }}Console.WriteLine("Finished");Console.ReadLine();
以下是上述DoOCR(image, ocrEngine, file)方法的代碼。
private static void DoOCR(RasterImage image, IOcrEngine ocrEngine, string fileName){ using (IOcrDocument ocrDocument = ocrEngine.DocumentManager.CreateDocument()) { ocrDocument.Pages.AddPages(image, 1, -1, null); ocrDocument.Pages.AutoPreprocess(OcrAutoPreprocessPageCommand.All, null); ocrDocument.Pages.Recognize(null); // Save the document we have as PDF ocrDocument.Save($@"D:?temp?NewPDFs?{Path.GetFileNameWithoutExtension(fileName)}_OCR.pdf", DocumentFormat.Pdf, null); }}
想要購買該產品正版授權,或了解更多產品信息請點擊
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn