Foxtable(狐表)用户栏目专家坐堂 → [求助] OCR识别不了截屏内容。


  共有3176人关注过本帖树形打印复制链接

主题:[求助] OCR识别不了截屏内容。

帅哥哟,离线,有人找我吗?
54292550
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:289 积分:4258 威望:0 精华:0 注册:2011/8/19 10:07:00
[求助] OCR识别不了截屏内容。  发帖心情 Post By:2021/12/28 22:42:00 [只看该作者]

参考这个OCR示例:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=100241&page=0&move=next

参考这段截屏代码:
Dim s As new Size(100,100) '截取的大小
Dim myGraphics As Graphics = basemainform.CreateGraphics()
Dim bit As New Bitmap(s.Width, s.Height, myGraphics)
Dim memoryGraphics As Graphics = Graphics.FromImage(bit)
memoryGraphics.CopyFromScreen(0,0,0,0,s) '截取的开始位置,坐标(100, 200)
bit.save("d:\test.jpg")
memoryGraphics.dispose
myGraphics.dispose
bit.dispose

只要是截屏代码保存的文件,OCR返回的内容是:#ERROR: Failed to load image
就算把能识别的照片通过画图软件直接复制出来,复制到截屏的文件中保存,到截屏中的那个文件就识别不了了。感觉好像是截屏出来的图片格式跟其他有啥不一样吗?


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110743 积分:563641 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/28 22:56:00 [只看该作者]

使用百度AI:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=139788

 回到顶部
帅哥哟,离线,有人找我吗?
54292550
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:289 积分:4258 威望:0 精华:0 注册:2011/8/19 10:07:00
  发帖心情 Post By:2021/12/30 16:14:00 [只看该作者]

@蓝老师 用百度API是可以用了,我是想做一个监控一样的东西,每秒钟触发一次的监控,这百度按次数算是有些贵了。而且我识别的东西很简单,就四个汉字,我感觉还是Asprise-OCR用起来最便捷,就是我碰到的那个问题很奇怪哦。。截屏自动保存的文件和图片不都一样吗。。咋还出现了那种情况?

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110743 积分:563641 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/30 16:42:00 [只看该作者]

别人的东西内部怎么处理的我们也不知道呀。如果有兼容性问题,要么到网上找找有没有新版的Asprise-OCR,或者联系他们官方咨询一下

 回到顶部
帅哥哟,离线,有人找我吗?
54292550
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:289 积分:4258 威望:0 精华:0 注册:2011/8/19 10:07:00
  发帖心情 Post By:2021/12/30 17:18:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:屏幕截图 2021-12-30 170500.png
图片点击可在新窗口打开查看

蓝老师,找到了一个规律,就是如果我把截屏后的文件通过画图软件另存一下的话就能识别了,保存的文件格式都不需要改,就是存的时候会跳出来丢失透明度的提示,刚才我试了另外一种截屏方法,也是会有丢失透明度的提示,只要另存好了文件,那个OCR就可以用了,就能识别了。这个透明度是个什么情况,截屏的时候能不能直接去掉?

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110743 积分:563641 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/30 17:40:00 [只看该作者]

试试
memoryGraphics.CopyFromScreen(0,0,0,0,s,System.Drawing.CopyPixelOperation.Whiteness)


https://docs.microsoft.com/zh-cn/dotnet/api/system.drawing.graphics.copyfromscreen?view=dotnet-plat-ext-6.0#System_Drawing_Graphics_CopyFromScreen_System_Int32_System_Int32_System_Int32_System_Int32_System_Drawing_Size_System_Drawing_CopyPixelOperation_

 回到顶部
帅哥哟,离线,有人找我吗?
54292550
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:289 积分:4258 威望:0 精华:0 注册:2011/8/19 10:07:00
  发帖心情 Post By:2021/12/30 17:40:00 [只看该作者]

@蓝老师 搞定了,就把截屏文件直接保存成png格式就行了。
Dim s As new Size(100,100) '截取的大小
Dim myGraphics As Graphics = basemainform.CreateGraphics()
Dim bit As New Bitmap(s.Width, s.Height, myGraphics)
Dim memoryGraphics As Graphics = Graphics.FromImage(bit)
memoryGraphics.CopyFromScreen(0,0,0,0,s) '截取的开始位置,坐标(100, 200)
bit.save("d:\test.png")
memoryGraphics.dispose
myGraphics.dispose
bit.dispose

 回到顶部