我可以访问所有emgu库。 VS找到库,using Emgu.CV.OCR
不返回任何错误。
当我尝试创建Tesseract
对象时,Program.cs会抛出FileLoadException
。在System.Windows.Forms.dll
。
删除创建tesseract的代码行可以使程序正常运行。
我尝试将tessdata复制到我的调试文件中,但也没有用。
这是我的代码:
private void button1_Click(object sender, EventArgs e)
{
Tesseract _ocr;
_ocr = new Tesseract(@"tessdata", "eng", Tesseract.OcrEngineMode.OEM_TESSERACT_CUBE_COMBINED);
OpenFileDialog Openfile = new OpenFileDialog();
if (Openfile.ShowDialog() == DialogResult.OK)
{
Image<Bgr, Byte> My_Image = new Image<Bgr, byte>(Openfile.FileName);
pictureBox1.Image = My_Image.ToBitmap();
}
}
答案 0 :(得分:0)
首先,您需要检查项目参考。是否有“Emgu.CV.OCR”库,如果不是先加入它。然后尝试以下代码,它可能适合您。
private void button1_Click(object sender, EventArgs e)
{
Tesseract _ocr;
_ocr = new Tesseract(@"C:\Emgu\emgucv-windows-universal-cuda 2.9.0.1922\Emgu.CV.OCR\tessdata", "eng", Tesseract.OcrEngineMode.OEM_TESSERACT_CUBE_COMBINED);//first Parameter set your path ..complete path like i did
_ocr.SetVariable("tessedit_char_whitelist", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopkrstuvwxyz");
OpenFileDialog Openfile = new OpenFileDialog();
if (Openfile.ShowDialog() == DialogResult.OK)
{
Image<Bgr, Byte> My_Image = new Image<Bgr, byte>(Openfile.FileName);
pictureBox1.Image = My_Image.ToBitmap();
}
}
答案 1 :(得分:0)
我摆弄了一段时间同样的问题;现在我明白了。
首先,请确保您具有以下 using指令(您可能需要通过NuGet下载Emgu.CV):
using Emgu.CV;
using Emgu.CV.OCR;
using System.Reflection;
using System.IO;
using System.Drawing;
然后,确保您拥有最新的 tessdata 。如果不是,请导航至github并下载(单击“克隆或下载”,然后选择“下载ZIP文件”)。然后,应解压缩文件,并将文件夹“ tessdata-master”重命名为“ tessdata”。将此文件夹复制到二进制文件所在的位置(组装位置)。
最后,分配正确的路径,您就可以开始进行OCR了!
string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\";
var _ocr = new Tesseract(path, "eng", OcrEngineMode.Default);
_ocr.SetImage(yourImage);
_ocr.Recognize();
var result = _ocr.GetCharacters();