LEADTOOLS教程:检测并编辑MICR和CMC7字体以隐藏检查信息
LEADTOOLS (Lead Technology)由Moe Daher and Rich Little创建于1990年,其总部设在北卡罗来纳州夏洛特。LEAD的建立是为了使Daher先生在数码图象与压缩技术领域的发明面向市场。在过去的发展历程中,LEAD以其在全世界主要国家中占有的市场领导地位,在数码图象开发工具领域中已成为既定的全球领导者。LEADTOOLS开发与发布的LEAD是屡获殊荣的开发工具包。
很少有人喜欢共享他们的个人信息,我保证也没有人喜欢共享文件中的私人信息。每天都会在大公司之间发送财务文件的图像,例如支票。在任何可以上传到互联网并在几秒钟内被盗的世界中,您永远不会过于谨慎地保护个人信息。
个人信息的编辑,有时称为“清理”,是文档中文本的黑化或删除。它旨在允许在文档中选择性地公开信息,同时对文档的其他部分保密。当存储的信息被修改或删除时,部分或全部数据仍保留在存储器中。这可能是设计的意外,在设计中,底层存储机制仍然允许读取信息,尽管它在名义上是擦除的。这个问题的一般术语是“数据剩余”。在某些情况下,编校通常是指解决数据剩余问题。
这篇文章将演示LEADTOOLS MICR SDK如何检查支票上的MICR字体,然后使用Annotations SDK对其进行编辑以隐藏私人财务信息。
创建一个名为DetactRedact(string file)的方法。此方法将搜索给定目录中找到的每个文件,然后使用该方法检测是否找到磁墨水字符识别(MICR)区域MICRCodeDetectionCommand Class。如果找到MICR区域,它将编辑区域的坐标,使其隐藏在视图之外。
首先,设置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)){ }
接下来,添加代码以检测检查中发现的MICR区域和CMC7区域。此代码将从上面进入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);
现在,如果查看输出文件夹,将会有一条覆盖CMC7 / MICR区域的黑色编辑条纹。刻录注释会更改图像中的像素数据,从而确保无法再检索已覆盖的信息。它不会在图像中创建另一个图层。
之前:
之后:
LEADTOOLS Imaging Pro Developer Toolkit、LEADTOOLS Document Imaging Suite Developer Toolkit、LEADTOOLS Medical Imaging Developer Toolkit是LEADTOOLS的产品,点击查看产品详情