c# 识别图片上的英文字母,+加号和-减号和0到9的数字

c# 识别图片上的英文字母,+加号和-减号和0到9的数字

这是一个模板,只会数字变化,英文变化,+号和-减号,内容不会发生大的变化。

img

img

img


什么软件,不用识别,直接读控件或者内存,网络抓包也是有可能的。
这是传说中奖金百万的职业吗?

你这是为了获取股票方面的数据吧,其实完全没必要用这种方式,可以直接用爬虫的。
你要的DEA、DIFF数据我都能获得,


这个就是我以前做的股票方面的爬虫。
需要可以深入讨论

1:百度有OCR识别,现在唯一的缺点是:不能识别个别加号和减号。这是极其致命的。
2:我的目的就是为了实现:MACDFS数据。这个数据如果能计算出来就太好了。现在如果能用C# 写一个程序来实现当然更好。
3: 有些股票数据如果取一分钟的,真的来不及了。我们现在的方案是:20秒取一次数据,等一分钟取数据,它已封死涨停。根本就买不进去。必须在涨停前对它形为进行分析。是真涨还是诱空。

如果是做股票的实时分析的话,调用百度的OCR接口应该不太行,一方面是识别的准确率比较低,另一方面识别的时效性也满足不了,建议还是本地自己写OCR算法

这个机器学习吧,如果不想自己来的话,找一下大厂的open api吧

这个机器学习吧,如果不想自己来的话,找一下大厂的open api吧

题主可以关注c# ocr方向的问题,具体代码还是自己编写比较好,因为需求可能会有很多改变

可以用C#加OPENVCsharp,方法在网上可以找得到。
https://www.cnblogs.com/jsxyhelu/p/9669583.html

这个项目题主可以使用,C#写的有源代码,能满足你的需求的https://gitee.com/bobo2cj/iamge2text.git

这种没有必要做图片识别来获取,直接使用爬虫方式更好用。用C#也可以 实现爬虫。https://www.cnblogs.com/cgli/archive/2011/11/07/2240440.html


/*
 * 开发思路:图片灰度处理,二进制,然后和图片中的字二进制库精确对比
 * 
 * 获取字库:通过下面代码中generateLicense(Bitmap singlepic)方法获得,具体操作:
 *   从图片中截图出(抠出)一个字符,然后处理得到二维的二进制矩阵,比如下面的字符1对应的二维矩阵
 *   00000
 *   00100
 *   11100
 *   00100
 *   00100
 *   00100
 *   00100
 *   00100
 *   00100
 *   11111
 *   00000
 *   00000
 *   
 * 注意:【相同字符,比如1,不同字体,字号,不同缩放大小的图片,获得到的二位矩阵中0、1排列和数量都是不同的!
 *     故按照此方法来写出匹配所有字的话,那字库就大了。。。】
*/
/// <summary>
/// 提取出该图片内的字符(将进过灰度处理的图片转化为0、1的二位数组)
/// </summary>
/// <param name="singlepic">图片来源</param>
public void generateLicense(Bitmap singlepic)
{
  try
  {
    char[,] charArray = new char[singlepic.Height, singlepic.Width];  //定义个chai型的二维数组记录每个像素上0/1的值,形成一个矩形
    int imageWidth = 0;  //记录图片的像素宽度
    int imageHeight = 0;  //记录图片的像素高度
    int dgGrayValue = 128;  //灰度值
    Color piexl;
    //string code = "";  //存储每个像素的0/1
    for (int posy = 0; posy < singlepic.Height; posy++)
    {//从上到下
      string codeCache = "";  //存储每行的像素的0/1
      for (int posx = 0; posx < singlepic.Width; posx++)
      {//从左到右
        piexl = singlepic.GetPixel(posx, posy);
        if (piexl.R < dgGrayValue)  
        {
           // 如果该像素的颜色为黑色,值就为“1”
          codeCache = codeCache + "1";
        }
        else
        {// 否则该像素的颜色为白色,值就为“0”
          codeCache = codeCache + "0";              
        }
      }
      char[] array = codeCache.ToCharArray();  //每行的0/1的值用数字保存,以便于进行循环处理
      //code += codeCache + "\n";
      for (imageWidth = 0; imageWidth < array.Length; imageWidth++)
        charArray[imageHeight, imageWidth] = array[imageWidth];  //通过循环将每行值转存到二维数组中
      imageHeight++;
    }    //*********************以上代码可用来获取一个字的图片二进制数组,即字库*****************************
  
    //开始和字库进行匹配(我的工具中只需要下面的几个字符)
    findWord(charArray, char0, imageHeight, imageWidth, BinaryWidth0, BinaryHeight0, '0');
    findWord(charArray, char1, imageHeight, imageWidth, BinaryWidth1, BinaryHeight1, '1');
    findWord(charArray, char2, imageHeight, imageWidth, BinaryWidth2, BinaryHeight2, '2');
    findWord(charArray, char3, imageHeight, imageWidth, BinaryWidth3, BinaryHeight3, '3');
    findWord(charArray, char4, imageHeight, imageWidth, BinaryWidth4, BinaryHeight4, '4');
    findWord(charArray, char5, imageHeight, imageWidth, BinaryWidth5, BinaryHeight5, '5');
    findWord(charArray, char6, imageHeight, imageWidth, BinaryWidth6, BinaryHeight6, '6');
    findWord(charArray, char7, imageHeight, imageWidth, BinaryWidth7, BinaryHeight7, '7');
    findWord(charArray, char8, imageHeight, imageWidth, BinaryWidth8, BinaryHeight8, '8');
    findWord(charArray, char9, imageHeight, imageWidth, BinaryWidth9, BinaryHeight9, '9');
    findWord(charArray, charA, imageHeight, imageWidth, BinaryWidthA, BinaryHeightA, 'a');
    findWord(charArray, charB, imageHeight, imageWidth, BinaryWidthB, BinaryHeightB, 'b');
    findWord(charArray, charC, imageHeight, imageWidth, BinaryWidthC, BinaryHeightC, 'c');
    findWord(charArray, charD, imageHeight, imageWidth, BinaryWidthD, BinaryHeightD, 'd');
    findWord(charArray, charE, imageHeight, imageWidth, BinaryWidthE, BinaryHeightE, 'e');
    findWord(charArray, charF, imageHeight, imageWidth, BinaryWidthF, BinaryHeightF, 'f');
    findWord(charArray, charP, imageHeight, imageWidth, BinaryWidthP, BinaryHeightP, 'p');
    findWord(charArray, charY, imageHeight, imageWidth, BinaryWidthY, BinaryHeightY, 'y');
    //------------------------------------END---------------------------------------------
    richTextBoxLicense.Text += identifySort();  //执行identifySort方法,将我需要的格式在richTextBoxLicense文本框中显示
    richTextBoxLicense.SelectionStart = richTextBoxLicense.TextLength;  //将光标移到最后面
  }
  catch { }
}

你可以试试用Python的OpenCV解决,或用百度的开源人工智能,或爬虫

有啥事,年后再说