OCR文本自动标注工具,Ocr文字识别,OCR图像识别 OCR标注工具 自动识别文字区域,并自...

OCR文本自动标注工具,Ocr文字识别,OCR图像识别 OCR标注工具 自动识别文字区域,并自... OCR文本自动标注工具Ocr文字识别OCR图像识别 OCR标注工具 自动识别文字区域并自动标注支持单张标注手动标注多张自动标注支持导出label文件基于C# Framework开发。 目前演示版本框架为.net Framework4.6直接上干货——今天给大家安利一个自己撸的OCR标注工具纯C#手搓专治各种图片文字识别后的标注需求。这玩意儿最大的特点就是能自动识别文字区域生成标注框批量处理几百张扫描件就跟玩儿似的。先看核心模块的代码结构。咱们用EmguCV做图像处理底层这货是OpenCV的.NET马甲处理图像区域检测稳得一批//区域检测核心代码 public ListRectangle DetectTextRegions(Mat srcImage) { using (var gray new Mat()) { CvInvoke.CvtColor(srcImage, gray, ColorConversion.Bgr2Gray); var morphologyKernel CvInvoke.GetStructuringElement(ElementShape.Rectangle, new Size(3, 3), new Point(-1, -1)); CvInvoke.Threshold(gray, gray, 0, 255, ThresholdType.Otsu); CvInvoke.MorphologyEx(gray, gray, MorphOp.Close, morphologyKernel, new Point(-1, -1), 2, BorderType.Default, new MCvScalar(0)); var contours new VectorOfVectorOfPoint(); CvInvoke.FindContours(gray, contours, null, RetrType.List, ChainApproxMethod.ChainApproxSimple); return contours.ToArray() .Where(c CvInvoke.ContourArea(c) 50) .Select(CvInvoke.BoundingRectangle) .ToList(); } }这段代码先用大津法做二值化接着用闭运算把文字区域连成块。实测这种处理对扫描件中的粘连文字效果拔群特别是处理旧文件扫描件时比直接调OCR接口的识别率高至少两成。标注功能支持三种模式闪电模式全自动批量处理精细模式单张手动微调混合模式先批量处理再人工复核导出的标注文件支持两种格式//标注文件序列化 public void ExportLabel(string path, ListOcrLabel labels) { var options new JsonSerializerOptions { WriteIndented true }; var json JsonSerializer.Serialize(labels.Select(l new { l.BoundingBox, l.TextContent, Confidence l.Confidence.ToString(P1) }), options); //兼容上古系统 File.WriteAllText(path, json, Encoding.GetEncoding(GB2312)); }注意这里特意用GB2312编码因为很多OCR项目对接的还是老系统。实测用UTF-8的话某些工业控制台会显示乱码。OCR文本自动标注工具Ocr文字识别OCR图像识别 OCR标注工具 自动识别文字区域并自动标注支持单张标注手动标注多张自动标注支持导出label文件基于C# Framework开发。 目前演示版本框架为.net Framework4.6遇到歪斜文本怎么办工具里内置了旋转校正功能//文本旋转校正 public Mat CorrectSkew(Mat inputImage) { var cannyEdges new Mat(); CvInvoke.Canny(inputImage, cannyEdges, 50, 200); LineSegment2D[] lines CvInvoke.HoughLinesP(cannyEdges, 1, Math.PI / 180, 20); var angles lines.Select(l Math.Atan2(l.P2.Y - l.P1.Y, l.P2.X - l.P1.X)) .Where(a Math.Abs(a) 0.1) .Select(a a * 180 / Math.PI); double medianAngle angles.Any() ? angles.Median() : 0; return RotationCorrection(inputImage, medianAngle); }这里用霍夫变换找直线取中位数角度旋转。实测对30度以内的倾斜文本校正效果不错超过45度的建议还是先人工处理。工具里最骚的操作是支持标注时自动填充OCR结果按Tab键就能把识别结果直接灌入文本框。这个交互细节让标注效率直接起飞处理合同扫描件时比手动输入快三倍不止。最后说下部署问题虽然基于.NET Framework 4.6开发但实测在Windows 7以上系统都能直接运行。有老铁在树莓派上跑起来过不过那需要魔改编译这里就不展开讲了。需要源码的直接去Github搜ocr-label-helper记得点star啊