Tesseract3.01 中文乱码问题

nlb_ch 2013-10-21 05:50:59

C#代码:
Bitmap bmp = (Bitmap)Bitmap.FromFile(@"E:\12.png");
TesseractProcessor tp = new TesseractProcessor();
if (tp.Init(null, "chi_sim", 7))
{
string result = tp.Apply(bmp);
}
我用以上代码OCR上面图片(Tesseract版本为3.01),结果为:
result == "涓腑 涓腑涓腑 涓腑涓?涓腑\n\n";
用Encoding.UTF8.GetString(Encoding.GetEncoding("GB2312").GetBytes(result)),结果为:
"中中 中中中中 中中?中中\n\n";

感觉Tesseract OCR中文编码为GB2312;,但是结果总是受字符间的空格影响为乱码.
Encoding.GetEncoding("gb2312").GetBytes(result)所得byte[]为:
228,184,173,228,184,173,32.228,184,173,228,184,173,228,184,173,228,184,173,32,228,184,173,228,184,63,228,184,173,228,184,173,10,10

其中32为空格,228,184,173三字节一个"中"字,但总会有大量的,像"228,184,63"这样的结果出乱码.请各路大神指点一二.谢谢.

以下例子一样:

string result = tp.Apply(bmp);
result =="浣犱綘 浼?\n";
用Encoding.UTF8.GetString(Encoding.GetEncoding("GB2312").GetBytes(result)),结果为:
"你你 ?\n";
Encoding.GetEncoding("gb2312").GetBytes(result)所得byte[]为:
228,189,160,228,189,160,32,228,188,63,10
...全文
551 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
nlb_ch 2013-10-22
  • 打赏
  • 举报
回复
高手大神们,你们都在哪里.
nlb_ch 2013-10-21
  • 打赏
  • 举报
回复
你好,我是用Tesseract 3.01来对图片做OCR,网上说Tesseract返回的是UTF-8的字符集,但我测试用GB2312编码解码结果才能认识. 我不太清楚"用字节来进行转换"怎么操作,请赐教一下.谢谢
风之影子 2013-10-21
  • 打赏
  • 举报
回复
图片里存在的是二进制数。即然是图片,那就用字节来进行转换。 和gb2312没有任何的关系。

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧