LEADTOOLS教程:檢測并編輯MICR和CMC7字體以隱藏檢查信息
LEADTOOLS (Lead Technology)由Moe Daher and Rich Little創(chuàng)建于1990年,其總部設(shè)在北卡羅來納州夏洛特。LEAD的建立是為了使Daher先生在數(shù)碼圖象與壓縮技術(shù)領(lǐng)域的發(fā)明面向市場。在過去的發(fā)展歷程中,LEAD以其在全世界主要國家中占有的市場領(lǐng)導(dǎo)地位,在數(shù)碼圖象開發(fā)工具領(lǐng)域中已成為既定的全球領(lǐng)導(dǎo)者。LEADTOOLS開發(fā)與發(fā)布的LEAD是屢獲殊榮的開發(fā)工具包。
很少有人喜歡共享他們的個人信息,我保證也沒有人喜歡共享文件中的私人信息。每天都會在大公司之間發(fā)送財務(wù)文件的圖像,例如支票。在任何可以上傳到互聯(lián)網(wǎng)并在幾秒鐘內(nèi)被盜的世界中,您永遠(yuǎn)不會過于謹(jǐn)慎地保護(hù)個人信息。
個人信息的編輯,有時稱為“清理”,是文檔中文本的黑化或刪除。它旨在允許在文檔中選擇性地公開信息,同時對文檔的其他部分保密。當(dāng)存儲的信息被修改或刪除時,部分或全部數(shù)據(jù)仍保留在存儲器中。這可能是設(shè)計的意外,在設(shè)計中,底層存儲機(jī)制仍然允許讀取信息,盡管它在名義上是擦除的。這個問題的一般術(shù)語是“數(shù)據(jù)剩余”。在某些情況下,編校通常是指解決數(shù)據(jù)剩余問題。
這篇文章將演示LEADTOOLS MICR SDK如何檢查支票上的MICR字體,然后使用Annotations SDK對其進(jìn)行編輯以隱藏私人財務(wù)信息。
創(chuàng)建一個名為DetactRedact(string file)的方法。此方法將搜索給定目錄中找到的每個文件,然后使用該方法檢測是否找到磁墨水字符識別(MICR)區(qū)域MICRCodeDetectionCommand Class。如果找到MICR區(qū)域,它將編輯區(qū)域的坐標(biāo),使其隱藏在視圖之外。
首先,設(shè)置AnnContainer。這個容器最終會覆蓋支票上的私人信息。
// Initialize the rendering engine AnnWinFormsRenderingEngine renderingEngine = new AnnWinFormsRenderingEngine(); string dir = Path.Combine(Path.GetDirectoryName(file), "Redacted"); // Check if directory exists, if not create it. if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); string outFile = Path.Combine(dir, Path.GetFileNameWithoutExtension(file) + "_redacted.tif"); // Get total pages found in image and look for MICR zone int totalPages = codecs.GetTotalPages(file); for (int i = 1; i <= totalPages; i++) using (RasterImage image = codecs.Load(file, i)){ }
接下來,添加代碼以檢測檢查中發(fā)現(xiàn)的MICR區(qū)域和CMC7區(qū)域。此代碼將從上面進(jìn)入using語句。
MICRCodeDetectionCommand detectionCommand = new MICRCodeDetectionCommand(); detectionCommand.Run(image); if (detectionCommand.MICRZone != LeadRect.Empty && detectionCommand.MICRZone.Width > 0 && detectionCommand.MICRZone.Height > 0) { AnnRedactionObject redaction = new AnnRedactionObject { Rect = container.Mapper.RectToContainerCoordinates(detectionCommand.MICRZone.ToLeadRectD()), Fill = AnnSolidColorBrush.Create("Black") }; container.Children.Add(redaction); }
CMC7CodeDetectionCommand cmc7DetectionCommand = new CMC7CodeDetectionCommand(); cmc7DetectionCommand.Run(image); if (cmc7DetectionCommand.CMC7Zone != LeadRect.Empty && cmc7DetectionCommand.CMC7Zone.Width > 0 && cmc7DetectionCommand.CMC7Zone.Height > 0) { AnnRedactionObject redaction = new AnnRedactionObject { Rect = container.Mapper.RectToContainerCoordinates(cmc7DetectionCommand.CMC7Zone.ToLeadRectD()), Fill = AnnSolidColorBrush.Create("Black") }; container.Children.Add(redaction); }
最后,您需要將編校對象刻錄到圖像中,然后保存圖像。以下代碼將跟隨using語句。
var img = renderingEngine.RenderOnImage(container, image.Clone()); codecs.Save(img, outFile, RasterImageFormat.TifJpeg411, 24, 1, 1, 1, CodecsSavePageMode.Append);
現(xiàn)在,如果查看輸出文件夾,將會有一條覆蓋CMC7 / MICR區(qū)域的黑色編輯條紋??啼涀⑨寱膱D像中的像素數(shù)據(jù),從而確保無法再檢索已覆蓋的信息。它不會在圖像中創(chuàng)建另一個圖層。
之前:
之后:
LEADTOOLS Imaging Pro Developer Toolkit、LEADTOOLS Document Imaging Suite Developer Toolkit、LEADTOOLS Medical Imaging Developer Toolkit是LEADTOOLS的產(chǎn)品,點(diǎn)擊查看產(chǎn)品詳情