mirror of
http://git.xinwangdao.com/cnnc-embedded-parts-detect/detect.git
synced 2025-06-24 13:34:13 +08:00
fixed
This commit is contained in:
parent
e69bc1821f
commit
953c459ee9
@ -67,5 +67,24 @@ public class DetectTaskEntity
|
|||||||
[Column("results")]
|
[Column("results")]
|
||||||
public string? Results { get; set; }
|
public string? Results { get; set; }
|
||||||
|
|
||||||
|
[StringLength(255), Comment("墙体类型")]
|
||||||
|
[JsonProperty(PropertyName = "wallType")]
|
||||||
|
[Column("wall_type")]
|
||||||
|
public string? WallType { get; set; }
|
||||||
|
|
||||||
|
[StringLength(255), Comment("方向")]
|
||||||
|
[JsonProperty(PropertyName = "direction")]
|
||||||
|
[Column("direction")]
|
||||||
|
public string? Direction { get; set; }
|
||||||
|
|
||||||
|
[StringLength(255), Comment("堆芯A点")]
|
||||||
|
[JsonProperty(PropertyName = "coreA")]
|
||||||
|
[Column("core_a")]
|
||||||
|
public string? CoreA { get; set; }
|
||||||
|
|
||||||
|
[StringLength(255), Comment("堆芯B点")]
|
||||||
|
[JsonProperty(PropertyName = "coreB")]
|
||||||
|
[Column("core_b")]
|
||||||
|
public string? CoreB { get; set; }
|
||||||
|
|
||||||
}
|
}
|
@ -15,12 +15,6 @@ namespace detect.gui.Services;
|
|||||||
|
|
||||||
public class OCRService
|
public class OCRService
|
||||||
{
|
{
|
||||||
// private static OCRService? _instance;
|
|
||||||
//
|
|
||||||
// public static OCRService Instance()
|
|
||||||
// {
|
|
||||||
// return _instance ??= new OCRService();
|
|
||||||
// }
|
|
||||||
private readonly PaddleOCREngine? _engine;
|
private readonly PaddleOCREngine? _engine;
|
||||||
public OCRService()
|
public OCRService()
|
||||||
{
|
{
|
||||||
@ -28,69 +22,11 @@ public class OCRService
|
|||||||
var parameter = new OCRParameter();
|
var parameter = new OCRParameter();
|
||||||
_engine = new PaddleOCREngine(config, parameter);
|
_engine = new PaddleOCREngine(config, parameter);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ApiResponse<string?> ImportImageOCR(string base64ImageString)
|
|
||||||
{
|
|
||||||
// var fileName = DateTime.Now.ToString("yyyyMMddHHmmss");
|
|
||||||
// fileName = GetImage(base64ImageString, fileName);
|
|
||||||
var result = "";
|
|
||||||
// using (var ocrEngine = new TesseractEngine(@".", "chi_sim", EngineMode.Default))
|
|
||||||
// {
|
|
||||||
// using (var img = Pix.LoadFromFile(fileName))
|
|
||||||
// {
|
|
||||||
// using (var page = ocrEngine.Process(img))
|
|
||||||
// {
|
|
||||||
// var text = page.GetText().Replace("\n\n", "");
|
|
||||||
// var start = text.IndexOf('\n');
|
|
||||||
// if (start < 0) return new ApiResponse<string?>(0, "success", result);
|
|
||||||
// text = text.Substring(start).Replace("”", "").Replace("|", "");
|
|
||||||
// while (text.Contains(" "))
|
|
||||||
// {
|
|
||||||
// text = text.Replace(" ", " ");
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// var lines = text.Split('\n');
|
|
||||||
// var data = new List<dynamic>();
|
|
||||||
// foreach (var line in lines)
|
|
||||||
// {
|
|
||||||
// if (string.IsNullOrWhiteSpace(line)) continue;
|
|
||||||
// var items = line.Split(" ");
|
|
||||||
// try
|
|
||||||
// {
|
|
||||||
// data.Add(new
|
|
||||||
// {
|
|
||||||
// code = ReplaceChars(items[1]),
|
|
||||||
// type = ReplaceChars(items[2]),
|
|
||||||
// x = ReplaceChars(items[3]),
|
|
||||||
// y = ReplaceChars(items[4]),
|
|
||||||
// center = ReplaceChars(items[5]),
|
|
||||||
// w = ReplaceChars(items[2].Split("x")[0]),
|
|
||||||
// h = ReplaceChars(items[2].Split("x")[1]),
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
// catch
|
|
||||||
// {
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (data.Count > 0)
|
|
||||||
// result = JsonSerializer.Serialize(data,
|
|
||||||
// new JsonSerializerOptions
|
|
||||||
// { WriteIndented = true, Encoder = JavaScriptEncoder.Create(UnicodeRanges.All) });
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
return new ApiResponse<string?>(0, "success", result);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Task<string> ImportByOCR(string base64ImageString)
|
public Task<string> ImportByOCR(string base64ImageString)
|
||||||
{
|
{
|
||||||
return Task.Run(() =>
|
return Task.Run(() =>
|
||||||
{
|
{
|
||||||
// var fileName = DateTime.Now.ToString("yyyyMMddHHmmss");
|
|
||||||
// fileName = GetImage(base64ImageString, fileName);
|
|
||||||
// var result = _engine?.DetectText(new Bitmap(fileName));
|
|
||||||
var image = GetImage(base64ImageString);
|
var image = GetImage(base64ImageString);
|
||||||
if (image is null) return "";
|
if (image is null) return "";
|
||||||
var result = _engine?.DetectText(image);
|
var result = _engine?.DetectText(image);
|
||||||
@ -101,49 +37,13 @@ public class OCRService
|
|||||||
d.Index = index;
|
d.Index = index;
|
||||||
return d;
|
return d;
|
||||||
}).ToList();
|
}).ToList();
|
||||||
// var items = resultList.Where(d => !string.IsNullOrEmpty(d.Text) && d.Text.ToUpper().Contains("定位信息表")).ToList();
|
// 获取预埋件信息
|
||||||
// if (items.Any() && !string.IsNullOrEmpty(items.First().Text))
|
|
||||||
// {
|
|
||||||
// wallCode = items.First().Text!.Replace("定位信息表", "").Replace("预埋件", "").Replace("墙", "");
|
|
||||||
// }
|
|
||||||
// var tempList = new List<OCRResultEntity>();
|
|
||||||
// if (!string.IsNullOrWhiteSpace(wallCode))
|
|
||||||
// {
|
|
||||||
// tempList = resultList.Where(d => !string.IsNullOrEmpty(d.Text) && d.Text.ToUpper().Contains(wallCode.ToUpper())).ToList();
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
var tempList = resultList.Where(d => !string.IsNullOrEmpty(d.Text) &&
|
var tempList = resultList.Where(d => !string.IsNullOrEmpty(d.Text) &&
|
||||||
(d.Text.ToUpper().Contains("PA") ||
|
(Enumerable.Range('A', 'Z' - 'A' + 1)
|
||||||
d.Text.ToUpper().Contains("PB") ||
|
.Select(i => "P" + (char)i)
|
||||||
d.Text.ToUpper().Contains("PC") ||
|
.Any(substring => d.Text.ToUpper().Contains(substring)) ||
|
||||||
d.Text.ToUpper().Contains("PD") ||
|
d.Text.ToUpper().Contains("VB")))
|
||||||
d.Text.ToUpper().Contains("PE") ||
|
|
||||||
d.Text.ToUpper().Contains("PF") ||
|
|
||||||
d.Text.ToUpper().Contains("PG") ||
|
|
||||||
d.Text.ToUpper().Contains("PH") ||
|
|
||||||
d.Text.ToUpper().Contains("PI") ||
|
|
||||||
d.Text.ToUpper().Contains("PJ") ||
|
|
||||||
d.Text.ToUpper().Contains("PK") ||
|
|
||||||
d.Text.ToUpper().Contains("PL") ||
|
|
||||||
d.Text.ToUpper().Contains("PM") ||
|
|
||||||
d.Text.ToUpper().Contains("PN") ||
|
|
||||||
d.Text.ToUpper().Contains("PO") ||
|
|
||||||
d.Text.ToUpper().Contains("PP") ||
|
|
||||||
d.Text.ToUpper().Contains("PO") ||
|
|
||||||
d.Text.ToUpper().Contains("PR") ||
|
|
||||||
d.Text.ToUpper().Contains("PS") ||
|
|
||||||
d.Text.ToUpper().Contains("PT") ||
|
|
||||||
d.Text.ToUpper().Contains("PU") ||
|
|
||||||
d.Text.ToUpper().Contains("PV") ||
|
|
||||||
d.Text.ToUpper().Contains("PW") ||
|
|
||||||
d.Text.ToUpper().Contains("PX") ||
|
|
||||||
d.Text.ToUpper().Contains("PY") ||
|
|
||||||
d.Text.ToUpper().Contains("PZ") ||
|
|
||||||
d.Text.ToUpper().Contains("VB") ||
|
|
||||||
d.Text.ToUpper().Contains("BS")))
|
|
||||||
.ToList();
|
.ToList();
|
||||||
// }
|
|
||||||
var data = new List<dynamic>();
|
var data = new List<dynamic>();
|
||||||
foreach (var item in tempList)
|
foreach (var item in tempList)
|
||||||
{
|
{
|
||||||
@ -153,8 +53,6 @@ public class OCRService
|
|||||||
var h = "0";
|
var h = "0";
|
||||||
var type = ReplaceChars(resultList[item.Index + 1].Text);
|
var type = ReplaceChars(resultList[item.Index + 1].Text);
|
||||||
if (string.IsNullOrWhiteSpace(type)) continue;
|
if (string.IsNullOrWhiteSpace(type)) continue;
|
||||||
// if (type.Contains('P', StringComparison.CurrentCultureIgnoreCase) && type.Contains('L', StringComparison.CurrentCultureIgnoreCase))
|
|
||||||
// {
|
|
||||||
type = Regex.Replace(type, "[A-Z]", string.Empty);
|
type = Regex.Replace(type, "[A-Z]", string.Empty);
|
||||||
if (type.Contains('-', StringComparison.CurrentCultureIgnoreCase))
|
if (type.Contains('-', StringComparison.CurrentCultureIgnoreCase))
|
||||||
{
|
{
|
||||||
@ -177,13 +75,6 @@ public class OCRService
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// w = type.Split("x")[1];
|
|
||||||
// h = type.Split("x")[0];
|
|
||||||
// }
|
|
||||||
data.Add(new
|
data.Add(new
|
||||||
{
|
{
|
||||||
sn = ReplaceChars(resultList[item.Index - 1].Text),
|
sn = ReplaceChars(resultList[item.Index - 1].Text),
|
||||||
@ -194,26 +85,10 @@ public class OCRService
|
|||||||
center = ReplaceChars(resultList[item.Index + 4].Text),
|
center = ReplaceChars(resultList[item.Index + 4].Text),
|
||||||
w = w,
|
w = w,
|
||||||
h = h,
|
h = h,
|
||||||
// w = ReplaceChars(resultList[item.Index + 1].Text).Split("x")[1],
|
|
||||||
// h = ReplaceChars(resultList[item.Index + 1].Text).Split("x")[0],
|
|
||||||
angle = ReplaceChars(resultList[item.Index + 5].Text),
|
angle = ReplaceChars(resultList[item.Index + 5].Text),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
catch
|
catch {} // 出错则忽略
|
||||||
{
|
|
||||||
// data.Add(new
|
|
||||||
// {
|
|
||||||
// sn = "",
|
|
||||||
// code = "",
|
|
||||||
// type = "",
|
|
||||||
// x = "0",
|
|
||||||
// y = "0",
|
|
||||||
// center = "0",
|
|
||||||
// w = "0",
|
|
||||||
// h = "0",
|
|
||||||
// angle = "0",
|
|
||||||
// });
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return data.Count > 0
|
return data.Count > 0
|
||||||
@ -229,6 +104,7 @@ public class OCRService
|
|||||||
return string.IsNullOrEmpty(text) ? "" : text.Replace("\u00d7", "x").Replace("_", "").Replace(",", "").Replace(":", "").Replace(";", "").Replace(" ", "").Replace(",", "");
|
return string.IsNullOrEmpty(text) ? "" : text.Replace("\u00d7", "x").Replace("_", "").Replace(",", "").Replace(":", "").Replace(";", "").Replace(" ", "").Replace(",", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 根据类型 返回图片
|
||||||
private Image? GetImage(string base64ImageString)
|
private Image? GetImage(string base64ImageString)
|
||||||
{
|
{
|
||||||
var imageType = System.Drawing.Imaging.ImageFormat.Gif;
|
var imageType = System.Drawing.Imaging.ImageFormat.Gif;
|
||||||
@ -265,12 +141,7 @@ public class OCRService
|
|||||||
var image = System.Drawing.Image.FromStream(ms);
|
var image = System.Drawing.Image.FromStream(ms);
|
||||||
using var bmpStream = new MemoryStream();
|
using var bmpStream = new MemoryStream();
|
||||||
image.Save(bmpStream, imageType);
|
image.Save(bmpStream, imageType);
|
||||||
// var bmpBytes = bmpStream.ToArray();
|
|
||||||
// File.WriteAllBytes(fileName, bmpBytes);
|
|
||||||
|
|
||||||
return image;
|
return image;
|
||||||
// image.Dispose();
|
|
||||||
// return fileName;
|
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user