public int Recognize(Bitmap bmpFile) { Bitmap bmpNew = new Bitmap(200, 200); Graphics gfx = Graphics.FromImage(bmpNew); gfx.FillRectangle(Brushes.White, 0, 0, 200, 200); gfx.DrawImage(bmpFile, 100, 100, bmpFile.Width, bmpFile.Height); string fileName = string.Format("{0}.tiff", number++); bmpNew.Save(fileName, System.Drawing.Imaging.ImageFormat.Tiff); MODI.Document md = new MODI.Document(); try { md.Create(fileName); md.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true); } catch (Exception e) { //if cannot recognize there is must be empty image return 0; } MODI.Image image = (MODI.Image)md.Images[0]; try { recognizedDigit = Int32.Parse(image.Layout.Text); } catch (Exception e) { return 0; } return recognizedDigit; }
public void OCR() { if (_MODIDocument == null) { return; } try { if (!IsDocumentAlreadyAnalysed()) { // add event handler for progress visualisation _MODIDocument.OnOCRProgress += new MODI._IDocumentEvents_OnOCRProgressEventHandler(this.ShowProgress); // the MODI call for OCR _MODIDocument.OCR(_MODIParameters.Language, _MODIParameters.WithAutoRotation, _MODIParameters.WithStraightenImage); } // create document instance _Document = Model.Document.CreateByMODI(_MODIDocument); statusBar1.Text = "Ready."; } catch (Exception ee) { // simple exception "handling" MessageBox.Show(ee.Message); } }
public int Recognize(Bitmap bmpFile) { Bitmap bmpNew = new Bitmap(200, 200); Graphics gfx = Graphics.FromImage(bmpNew); gfx.FillRectangle(Brushes.White, 0, 0, 200, 200); gfx.DrawImage(bmpFile, 100, 100, bmpFile.Width, bmpFile.Height); string fileName = string.Format("{0}.tiff", number++); bmpNew.Save(fileName, System.Drawing.Imaging.ImageFormat.Tiff); MODI.Document md = new MODI.Document(); try { md.Create(fileName); md.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true); } catch (Exception e) { //if cannot recognize there is must be empty image return(0); } MODI.Image image = (MODI.Image)md.Images[0]; try { recognizedDigit = Int32.Parse(image.Layout.Text); } catch (Exception e) { return(0); } return(recognizedDigit); }
/// <summary> /// Read Text from Image and Store in Text File /// </summary> /// <param name="ImagePath">specify the Image Path</param> /// <param name="StoreTextFilePath">Specify the Store Text File</param> private static void ReadTextFromImage(String ImagePath, String StoreTextFilePath) { try { // Grab Text From Image MODI.Document ModiObj = new MODI.Document(); ModiObj.Create(ImagePath); ModiObj.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true); //Retrieve the text gathered from the image MODI.Image ModiImageObj = (MODI.Image)ModiObj.Images[0]; // Store Image Content in Text File FileStream CreateFileObj = new FileStream(StoreTextFilePath, FileMode.Create); //save the image text in the text file StreamWriter WriteFileObj = new StreamWriter(CreateFileObj); WriteFileObj.Write(ModiImageObj.Layout.Text); WriteFileObj.Close(); ModiObj.Close(); } catch (Exception ex) { throw new Exception(ex.Message); } }
/// <summary> /// Check for Images /// read text from these images. /// save text from each image in text file automaticly. /// handle problems with images /// </summary> /// <param name="directoryPath">Set Directory Path to check for Images in it</param> public string doOCR(string file) { try { //OCR Operations ... MODI.Document md = new MODI.Document(); md.Create(file); md.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true); MODI.Image image = (MODI.Image)md.Images[0]; return(image.Layout.Text); } catch (Exception exc) { string msgTxt; if (exc.Message == "OCR running error") { msgTxt = "Es konnten keine Buchstaben erkannt werden. \r\nDas Bild wird unter einer laufenden Nummer gespeichert."; } else { msgTxt = exc.Message; } //uncomment the below code to see the expected errors System.Windows.MessageBox.Show(msgTxt, "OCR Exception"); return(string.Empty); } }
/* * public SubtitleImage GetImage() * { * Bitmap b = GetBitmap(); * Debugger.Print(Scan()); * return new SubtitleImage(GetBitmap()); * }*/ public string Scan() { string bitmapName = Path.GetTempPath() + "suprip_temp.png"; MODI.Document md = new MODI.Document(); GetBitmap().Save(bitmapName); md.Create(bitmapName); md.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true); MODI.Image image = (MODI.Image)md.Images[0]; MODI.Layout layout = image.Layout; string scanned = ""; ocrWords = new List <OcrWord>(); for (int j = 0; j < layout.Words.Count; j++) { // Get this word and deal with it. MODI.Word word = (MODI.Word)layout.Words[j]; OcrWord w = new OcrWord(word.RecognitionConfidence, word.Text); ocrWords.Add(w); string text = word.Text; scanned += text + " "; int rc = word.RecognitionConfidence; } md.Close(false); return(scanned); }
private void pictureBox1_Click(object sender, EventArgs e) { #if false MODI.Document doc = new MODI.Document(); doc.Create(@"test.bmp"); doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, false, false); StringBuilder str = new StringBuilder(); for (int i = 0; i < doc.Images.Count; i++) { MODI.Image img = (MODI.Image)doc.Images[i]; MODI.Layout layout = img.Layout; Console.WriteLine(layout.Text); Console.WriteLine(); for (int j = 0; j < layout.Words.Count; j++) { MODI.Word word = (MODI.Word)layout.Words[j]; str.Append("[" + word.Text + "]"); } } StreamWriter outfile = new StreamWriter(@"ocr.txt"); outfile.Write(str.ToString()); outfile.Close(); #endif }
public string Analyse() { string texts = ""; if (_MODIDocument == null) { return(texts); } try { // add event handler for progress visualisation //_MODIDocument.OnOCRProgress += new MODI._IDocumentEvents_OnOCRProgressEventHandler(this.ShowProgress); // the MODI call for OCR // _MODIDocument.OCR(_MODIParameters.Language,_MODIParameters.WithAutoRotation,_MODIParameters.WithStraightenImage); _MODIDocument.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true); //this.textBox1.Text = (_MODIDocument.Images[0] as MODI.Image).Layout.Text; //MessageBox.Show((_MODIDocument.Images[0] as MODI.Image).Layout.Text); texts = (_MODIDocument.Images[0] as MODI.Image).Layout.Text; //statusBar1.Text = "Ready."; _MODIDocument.Close(false); _MODIDocument = null; } catch (Exception ee) { // simple exception "handling" //MessageBox.Show(@""+ee.Message+@""+ee.ToString()+@""); } return(texts); }
private string ReadImage(string imagePath) { string imageText = string.Empty; try { // Grab Text From Image MODI.Document ModiObj = new MODI.Document(); ModiObj.Create(imagePath); ModiObj.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true); //Retrieve the text gathered from the image MODI.Image ModiImageObj = (MODI.Image)ModiObj.Images[0]; //System.Console.WriteLine(ModiImageObj.Layout.Text); imageText = ModiImageObj.Layout.Text; ModiObj.Close(); } catch (Exception ex) { throw new Exception(ex.Message); } return imageText; }
// 点击“转换”事件 private void button1_Click(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); string img_Path = txt_imgpath.Text.Trim(); // 图片地址 if (String.IsNullOrEmpty(img_Path)) { MessageBox.Show("请先输入图片地址!"); return; } try { MODI.Document doc = new MODI.Document(); doc.Create(img_Path); MODI.Image image; MODI.Layout layout; doc.OCR(GetLanuageType(cmb_languagetype.SelectedValue.ToString()), true, true); // 识别文字类型 for (int i = 0; i < doc.Images.Count; i++) { image = (MODI.Image)doc.Images[i]; layout = image.Layout; sb.Append(layout.Text); } txt_result.Text = sb.ToString(); } catch (Exception ex) { txt_result.Text = "转换失败!详情:" + ex.Message; } }
private void pickConvertButton_Click(object sender, EventArgs e) { openFileDialog1.FileName = ""; openFileDialog1.Filter = "Image|*.jpg; *.png; *.bmp; *.jpeg; *.PNG;"; if (openFileDialog1.ShowDialog() == DialogResult.OK) { pictureBox1.Image = Image.FromFile(openFileDialog1.FileName.ToString()); } try { MODI.Document doc = new MODI.Document(); doc.Create(openFileDialog1.FileName.ToString()); if (comboBox1.SelectedIndex == 0) { doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true); } else if (comboBox1.SelectedIndex == 1) { doc.OCR(MODI.MiLANGUAGES.miLANG_GERMAN, true, true); } else { doc.OCR(MODI.MiLANGUAGES.miLANG_TURKISH, true, true); } foreach (MODI.Image p in doc.Images) { MODI.Layout txt = p.Layout; richTextBox1.Text = txt.Text; } doc.Close(); } catch (Exception errorMes) { MessageBox.Show(errorMes.Message.ToString(), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public string GetTextData(string path) { string fileExtension = Path.GetExtension(path); string fileName = Path.GetFileName(path); if (fileExtension != ".jpg" && fileExtension != ".JPG") throw new Exception("Nieobsługiwany typ pliku."); MODI.Document md = new MODI.Document(); md.Create(path); md.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH); MODI.Image image = (MODI.Image)md.Images[0]; return image.Layout.Text; }
private string OCR(string fp) { try { //OCR Operations ... MODI.Document md = new MODI.Document(); md.Create(fp); md.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true); MODI.Image image = (MODI.Image)md.Images[0]; return image.Layout.Text; } catch (Exception ex) { DebugHelper.WriteException(ex, "Error attempting to OCR " + fp); return string.Empty; } }
private string OCR(string fp) { try { //OCR Operations ... MODI.Document md = new MODI.Document(); md.Create(fp); md.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true); MODI.Image image = (MODI.Image)md.Images[0]; return(image.Layout.Text); } catch (Exception ex) { DebugHelper.WriteException(ex, "Error attempting to OCR " + fp); return(string.Empty); } }
private void button1_Click(object sender, EventArgs e) { MODI.Document doc = new MODI.Document(); doc.Create("C:\\Users\\W_ang\\Pictures\\Camera Roll\\无标题.png"); MODI.Image image; MODI.Layout layout; doc.OCR(MODI.MiLANGUAGES.miLANG_CHINESE_SIMPLIFIED, true, true); StringBuilder sb = new StringBuilder(); for (int i = 0; i < doc.Images.Count; i++) { image = (MODI.Image)doc.Images[i]; layout = image.Layout; sb.Append(layout.Text); } textBox1.Text = sb.ToString(); }
public static string getTextBitmap(string nameImage) { string text = null; try { string file = Path.GetFullPath(nameImage + ".jpg"); MODI.Document md = new MODI.Document(); md.Create(file); md.OCR(MODI.MiLANGUAGES.miLANG_SPANISH, false, false); MODI.Image image = (MODI.Image)md.Images[0]; MODI.Layout layout = image.Layout; text = image.Layout.Text.Trim().Replace("\r\n", ""); md.Close(false); }catch (Exception e) { text = null; } return(text); }
public static string getTextBitmap(string nameImage) { string text = null; try { string file = Path.GetFullPath(nameImage + ".jpg"); MODI.Document md = new MODI.Document(); md.Create(file); md.OCR(MODI.MiLANGUAGES.miLANG_SPANISH, false, false); MODI.Image image = (MODI.Image)md.Images[0]; MODI.Layout layout = image.Layout; text = image.Layout.Text.Trim().Replace("\r\n", ""); md.Close(false); }catch(Exception e){ text = null; } return text; }
private static void ReadTextFromImage(String ImagePath) { try { // Grab Text From Image MODI.Document ModiObj = new MODI.Document(); ModiObj.Create(ImagePath); ModiObj.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true); //Retrieve the text gathered from the image MODI.Image ModiImageObj = (MODI.Image)ModiObj.Images[0]; System.Console.WriteLine(ModiImageObj.Layout.Text); ModiObj.Close(); } catch (Exception ex) { throw new Exception(ex.Message); } }
/// <summary> /// office2007 MODI组件OCR识别 /// </summary> /// <param name="imgPath"></param> /// <returns></returns> public string Ocr_2007(string imgPath) { try { var imgType = imgPath.Substring(imgPath.Length - 3); var data = File.ReadAllBytes(imgPath); string imgInfo = ""; int i = 0; var localimgFile = AppDomain.CurrentDomain.BaseDirectory + @"\" + Guid.NewGuid().ToString() + "." + imgType; while (!imgInfo.Equals("转换成功") && i < 3) { ++i; imgInfo = this.GetBase64(data, imgType, localimgFile); } MODI.Document doc = new MODI.Document(); doc.Create(localimgFile); MODI.Image image; MODI.Layout layout; doc.OCR(MODI.MiLANGUAGES.miLANG_CHINESE_SIMPLIFIED, true, true); StringBuilder sb = new StringBuilder(); image = (MODI.Image)doc.Images[0]; layout = image.Layout; sb.Append(layout.Text); doc = null; var localFilePath = AppDomain.CurrentDomain.BaseDirectory + @"\" + Guid.NewGuid().ToString() + ".txt"; File.WriteAllText(localFilePath, sb.ToString()); Console.WriteLine(sb.ToString()); return(localFilePath); } catch (Exception e) { File.AppendAllText(AppDomain.CurrentDomain.BaseDirectory + @"\log.txt", e.ToString()); return(""); } finally { GC.Collect(); } }
/// <summary> /// 识别率不是很高,微软的 /// </summary> /// <param name="imgfileName"></param> /// <returns></returns> private string OcrFunc(string imgfileName) // 参数为包含文本的图片文件名 { var langs = MODI.MiLANGUAGES.miLANG_ENGLISH; // MODI.MiLANGUAGES.miLANG_CHINESE_SIMPLIFIED; 中文含英文 // MODI.MiLANGUAGES.miLANG_JAPANESE; 日文含英文 var doc = new MODI.Document(); var image = default(MODI.Image); var layout = default(MODI.Layout); try { doc.Create(imgfileName); doc.OCR(langs, true, true); var sb = new StringBuilder(); for (int i = 0; i < doc.Images.Count; i++) { image = (MODI.Image)doc.Images[i]; layout = image.Layout; sb.AppendLine(string.Format("{0}, {1}", i, layout.Text)); } doc.Close(false); return(sb.ToString()); } catch (Exception ex) { MessageBox.Show(ex.Message); return(string.Empty); } finally { layout = null; image = null; doc = null; } }
static void Main(string[] args) { MODI.Document doc = new MODI.Document(); doc.Create("1.png"); MODI.Image image; MODI.Layout layout; doc.OCR(MODI.MiLANGUAGES.miLANG_CHINESE_SIMPLIFIED, true, true); // 识别简体中文 string sb; for (int i = 0; i < doc.Images.Count; i++) { image = (MODI.Image)doc.Images[i]; layout = image.Layout; Console.WriteLine(layout.Text); } Console.ReadLine(); }
/* public SubtitleImage GetImage() { Bitmap b = GetBitmap(); Debugger.Print(Scan()); return new SubtitleImage(GetBitmap()); }*/ public string Scan() { string bitmapName = Path.GetTempPath() + "suprip_temp.png"; MODI.Document md = new MODI.Document(); GetBitmap().Save(bitmapName); md.Create(bitmapName); md.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true); MODI.Image image = (MODI.Image)md.Images[0]; MODI.Layout layout = image.Layout; string scanned = ""; ocrWords = new List<OcrWord>(); for (int j = 0; j < layout.Words.Count; j++) { // Get this word and deal with it. MODI.Word word = (MODI.Word)layout.Words[j]; OcrWord w = new OcrWord(word.RecognitionConfidence, word.Text); ocrWords.Add(w); string text = word.Text; scanned += text + " "; int rc = word.RecognitionConfidence; } md.Close(false); return scanned; }
private string GetOCR(Bitmap big, Imaging.ImageRange range, bool flag = true) { Point p = new Point(); int width = 0; int height = 0; p.X = range.loc.X; p.Y = range.loc.Y; width = range.width; height = range.height; big = Imaging.CropImage(big, p, width, height); big = Imaging.ConvertFormat(big, System.Drawing.Imaging.PixelFormat.Format32bppArgb); //if (!flag) //big = Imaging.MakeGrayscale3(big); ////; //else //big = grayscale(big); //big.Save(Environment.CurrentDirectory + "\\test.png"); ////tessnet2.Tesseract api = new tessnet2.Tesseract(); ////api.Init() //OcrApi.PathToEngine = Environment.CurrentDirectory + @"\tesseract.dll"; //OcrApi api = OcrApi.Create(); //Languages[] lang = { Languages.English }; //api.Init(lang, null, OcrEngineMode.OEM_TESSERACT_CUBE_COMBINED); //api.SetVariable("tessedit_char_whitelist", "0123456789"); //string plainText = api.GetTextFromImage(big); //////Console.WriteLine(plainText); //////this.Invoke(new MethodInvoker(delegate() { txtLog.AppendText(plainText + Environment.NewLine); })); //api.Dispose(); //api = null; //System.GC.Collect(0, GCCollectionMode.Forced); //System.GC.WaitForPendingFinalizers(); //return plainText; var tmpFile = Path.GetTempFileName(); string text = ""; var bmp = new Bitmap(Math.Max(big.Width, 1024), Math.Max(big.Height, 768)); var gfxResize = Graphics.FromImage(bmp); gfxResize.DrawImage(big, new Rectangle(0, 0, big.Width, big.Height)); bmp.Save(tmpFile + ".png", ImageFormat.Png); //EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 100L); // 0(최저화질 고압축) ~ 100L(최고화질 저압축) //myEncoderParameters.Param[0] = myEncoderParameter; //bmp.Save(tmpFile + ".jpg", jpgEncoder, myEncoderParameters); var doc = new MODI.Document(); doc.Create(tmpFile + ".png"); //Regex reg = new Regex(@"[^\d]+"); try { doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true); var img = (MODI.Image)doc.Images[0]; var layout = img.Layout; text = layout.Text; File.Delete(tmpFile); File.Delete(tmpFile + ".png"); } catch (Exception e) { try { doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, false, false); var img = (MODI.Image)doc.Images[0]; var layout = img.Layout; text = layout.Text; } catch (Exception) { } finally { File.Delete(tmpFile); File.Delete(tmpFile + ".png"); } } finally { File.Delete(tmpFile); File.Delete(tmpFile + ".png"); } Int32 tryCheck = 0; text = Regex.Replace(text.Replace(" ", "").Replace(",", "").Replace(".", "").Trim(), @"[^\d]", ""); Int32.TryParse(text, out tryCheck); if (tryCheck == 0 || tryCheck < 1000) { try { EncoderParameters myEncoderParameters = new EncoderParameters(1); System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality; ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg); tmpFile = Path.GetTempFileName(); text = ""; bmp = new Bitmap(Math.Max(big.Width, 1024), Math.Max(big.Height, 768)); gfxResize = Graphics.FromImage(bmp); gfxResize.DrawImage(big, new Rectangle(0, 0, big.Width, big.Height)); EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 100L); // 0(최저화질 고압축) ~ 100L(최고화질 저압축) myEncoderParameters.Param[0] = myEncoderParameter; bmp.Save(tmpFile + ".jpg", jpgEncoder, myEncoderParameters); doc = new MODI.Document(); doc.Create(tmpFile + ".jpg"); doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true); var img = (MODI.Image)doc.Images[0]; var layout = img.Layout; text = layout.Text; } catch (Exception) { doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, false, false); var img = (MODI.Image)doc.Images[0]; var layout = img.Layout; text = layout.Text; } finally { File.Delete(tmpFile); File.Delete(tmpFile + ".jpg"); } } text = Regex.Replace(text.Replace(" ", "").Replace(",", "").Replace(".", "").Trim(), @"[^\d]", ""); doc.Close(); doc = null; bmp.Dispose(); bmp = null; System.GC.Collect(0, GCCollectionMode.Forced); System.GC.WaitForPendingFinalizers(); return(text); //return ""; }