请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

druidAAAA

注册会员

11

主题

36

帖子

95

积分

注册会员

积分
95
druidAAAA
注册会员   /  发表于:2017-1-4 23:07  /   查看:3543  /  回复:7
各位前辈,
我的程序每秒截10个图, 送给OCR分析
无奈按照leadtools的指引, 我需要把图片先存到硬盘上, 再读取.
难道 RasterImage 就不能直接读取我C#的图片格式吗 ? (如.net的 Image 类型)

7 个回复

倒序浏览
druidAAAA
注册会员   /  发表于:2017-1-4 23:17:29
沙发
本帖最后由 druidAAAA 于 2017-1-5 00:03 编辑

我使用的是类似这样的代码, 鉴于我每秒需要10张图, 速度严重不足
以下代码每秒发生10次, 很是吃不消

public string Read(System.IO.MemoryStream img)
        {
            // Create an OCR document
            using (IOcrDocument ocrDocument = ocrEngine.DocumentManager.CreateDocument())
            {
                string imageFileName = @"c:\baseImage.jpg"; //这只是举例
                RasterImage rasterImg = ocrEngine.RasterCodecsInstance.Load(imageFileName);

                IOcrPage ocrPage = ocrDocument.Pages.AddPage(rasterImg, null);
                ocrPage.Recognize(null);
               
                System.IO.MemoryStream stream = new System.IO.MemoryStream();
                ocrDocument.Save(stream, DocumentFormat.Text, null);

                byte[] rsl = stream.ToArray();
                string haha= System.Text.Encoding.Default.GetString(rsl);
                               return haha;
            }
        }


回复 使用道具 举报
druidAAAA
注册会员   /  发表于:2017-1-4 23:25:55
板凳
本帖最后由 druidAAAA 于 2017-1-5 00:22 编辑

刚想到一个笨方法 : 通过 System.IO.MemoryStream 作为接口,
但这个方法还是要转多一次,  省下的是硬盘的读写时间, 还是不够优化
各位前辈你们看还有什么别的方法提速吗?


回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-1-5 10:33:44
地板
load方法是可以直接加载stream类型的数据的,参考
https://www.leadtools.com/help/leadtools/v19/dh/co/leadtools.codecs~leadtools.codecs.rastercodecs~load(stream).html
回复 使用道具 举报
druidAAAA
注册会员   /  发表于:2017-1-5 11:10:12
5#
Richard.Ma 发表于 2017-1-5 10:33
load方法是可以直接加载stream类型的数据的,参考
https://www.leadtools.com/help/leadtools/v19/dh/co/l ...

多谢你, 我现在用的就是memoryStream, 来传
但是还是要先把.net的Image类(如Bitmap)先存为Stream, 再读取
还是多了一步

还请问多一个问题可以吗?
我上面的代码, 每次调用 IOcrDocument 的时候都通过 CreateDocument() 重新生成一次,
而这个动作我每秒要发生 15 次 左右,
是否应该让  IOcrDocument 的 实例永远常驻内存?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-1-5 11:34:11
6#
是的,无法直接使用Image类

关于第二个问题,意思是IOcrDocument一直存在,每次通过更新Page内容来重新识别吧。这个具体的性能和内存安全性问题还是需要您自行测试确定
回复 使用道具 举报
druidAAAA
注册会员   /  发表于:2017-1-5 14:31:41
7#
Richard.Ma 发表于 2017-1-5 11:34
是的,无法直接使用Image类

关于第二个问题,意思是IOcrDocument一直存在,每次通过更新Page内容来重新 ...

多谢
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-1-5 14:45:10
8#
不客气
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部