现在我可以进行OCR图片文字识别了,但是有一个问题:当我选择的识别区域较小时(经测试识别区域内少于8个汉字或数字时),将不能进行识别了,我想要的效果是:即便选择一个汉字或数字也可以进行识别。求代码~
附上我的关键代码: //创建一个临时文件
string strFileName =string.Format("{0:yyyy_MM_dd_HH_mm_ss_ffff}", DateTime.Now) + ".tif";
try
{
//位图对象保存到一个TIFF文件
Console.WriteLine(m_obj.PixelFormat.ToString());
m_obj.Save(strFileName, ImageFormat.Tiff);
m_obj.Dispose(); //实例化MODI.Document对象
MODI.Document md = new MODI.Document();
md.Create(strFileName); //运行OCR
md.OCR(MODI.MiLANGUAGES.miLANG_CHINESE_SIMPLIFIED, true, true); //定义要识别的语言种类
//这个字符串将包含文本
string strText = String.Empty; //获得第一个图片
MODI.Image image = (MODI.Image)md.Images[0];
//获取布局
MODI.Layout layout = image.Layout; //遍历文字
for (int j = 0; j < layout.Words.Count; j++)
{
//得到文字
MODI.Word word = (MODI.Word)layout.Words[j];
// 添加一个空格来分隔文字
if (strText.Length > 0)
{
strText += " ";
}
//添加文字
strText += word.Text;
}
//关闭MODI.Document对象
md.Close(false); //创建对话框显示文本的文本识别
ShowText st = new ShowText();
//该对话框的文本
st.m_strOCRText = strText;
//显示的对话框
st.ShowDialog();
}
catch (Exception)
{
MessageBox.Show("识别区域不低于9个字符!", "提示"); //我要的是即便一个字符也可以识别
}
try
{
//删除临时文件
File.Delete(strFileName);
}
catch{ }
附上我的关键代码: //创建一个临时文件
string strFileName =string.Format("{0:yyyy_MM_dd_HH_mm_ss_ffff}", DateTime.Now) + ".tif";
try
{
//位图对象保存到一个TIFF文件
Console.WriteLine(m_obj.PixelFormat.ToString());
m_obj.Save(strFileName, ImageFormat.Tiff);
m_obj.Dispose(); //实例化MODI.Document对象
MODI.Document md = new MODI.Document();
md.Create(strFileName); //运行OCR
md.OCR(MODI.MiLANGUAGES.miLANG_CHINESE_SIMPLIFIED, true, true); //定义要识别的语言种类
//这个字符串将包含文本
string strText = String.Empty; //获得第一个图片
MODI.Image image = (MODI.Image)md.Images[0];
//获取布局
MODI.Layout layout = image.Layout; //遍历文字
for (int j = 0; j < layout.Words.Count; j++)
{
//得到文字
MODI.Word word = (MODI.Word)layout.Words[j];
// 添加一个空格来分隔文字
if (strText.Length > 0)
{
strText += " ";
}
//添加文字
strText += word.Text;
}
//关闭MODI.Document对象
md.Close(false); //创建对话框显示文本的文本识别
ShowText st = new ShowText();
//该对话框的文本
st.m_strOCRText = strText;
//显示的对话框
st.ShowDialog();
}
catch (Exception)
{
MessageBox.Show("识别区域不低于9个字符!", "提示"); //我要的是即便一个字符也可以识别
}
try
{
//删除临时文件
File.Delete(strFileName);
}
catch{ }
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货