csharp:Optical Character Recognition

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

using
System;

using
System.Collections.Generic;

using
System.Linq;

using
System.Text;

using
System.Data;

using
System.Drawing;

using
System.IO;

using
System.Drawing.Imaging;

using
MODI;//Microsoft Office Document Imaging

// 首先用office安装盘这个组件,默认安装office的时候是不会安装的,只要添加这个组件功能就好了安装说明:http://support.microsoft.com/kb/982760

//组件Microsoft Office Document Imaging 12.0 Type Library(office2007)

//或者Microsoft Office Document Imaging 11.0 Type Library(office2003)

//中文简体OCR引擎 http://www.microsoft.com/downloads/thankyou.aspx?familyId=dd172063-9517-41d8-82af-29c38f7437b6&displayLang=zh-hk

namespace
ToText

{  

    /// <summary>

    /// Optical Character Recognition光学字符识别

    /// 20140507 Geovin Du

    /// 涂聚文

    /// </summary>

    public
static class OCRGetstring

    {

        /// <summary>

        /// 语言类型

        /// </summary>

        /// <returns></returns>

        public
static DataTable getLanguageList()

        {

            DataTable dt = new
DataTable();

            dt.Columns.Add("ID",typeof(int));

            dt.Columns.Add("LanguageName", typeof(string));

            dt.Columns.Add("LanguageLCID", typeof(string));

            //dt.Rows.Add(1, "", 1);

            dt.Rows.Add(1,"简体中文", "2052");

            dt.Rows.Add(2,"繁体中文", "1028");

            dt.Rows.Add(3,"英语", "9");

            dt.Rows.Add(4,"捷克语", "5");

            dt.Rows.Add(5,"丹麦语", "6");

            dt.Rows.Add(6,"德语", "7");

            dt.Rows.Add(7,"希腊语", "8");

            dt.Rows.Add(8,"西班牙语", "10");

            dt.Rows.Add(9,"芬兰语", "11");

            dt.Rows.Add(10,"法语", "12");

            dt.Rows.Add(11, "匈牙利语", "14");

            dt.Rows.Add(12, "意大利语", "16");

            dt.Rows.Add(13, "日语", "17");

            dt.Rows.Add(14, "韩语", "18");

            dt.Rows.Add(15, "荷兰语", "19");

            dt.Rows.Add(16, "挪威语", "20");

            dt.Rows.Add(17, "波兰语", "21");

            dt.Rows.Add(18, "葡萄牙语", "22");

            dt.Rows.Add(19, "俄语", "25");

            dt.Rows.Add(20,"瑞典语", "29");

            dt.Rows.Add(21,"土耳其语", "31");

            return
dt;

        }

        /// <summary>

        ///

        /// </summary>

        /// <param name="sValue"></param>

        /// <returns></returns>

        private
static MODI.MiLANGUAGES GetLanuageType(string
sValue)

        {

            switch
(sValue)

            {

                case
"2052":

                    return
MODI.MiLANGUAGES.miLANG_CHINESE_SIMPLIFIED;

                case
"5":

                    return
MODI.MiLANGUAGES.miLANG_CZECH;

                case
"6":

                    return
MODI.MiLANGUAGES.miLANG_DANISH;

                case
"7":

                    return
MODI.MiLANGUAGES.miLANG_GERMAN;

                case
"8":

                    return
MODI.MiLANGUAGES.miLANG_GREEK;

                case
"9":

                    return
MODI.MiLANGUAGES.miLANG_ENGLISH;

                case
"10":

                    return
MODI.MiLANGUAGES.miLANG_SPANISH;

                case
"11":

                    return
MODI.MiLANGUAGES.miLANG_FINNISH;

                case
"12":

                    return
MODI.MiLANGUAGES.miLANG_FRENCH;

                case
"14":

                    return
MODI.MiLANGUAGES.miLANG_HUNGARIAN;

                case
"16":

                    return
MODI.MiLANGUAGES.miLANG_ITALIAN;

                case
"17":

                    return
MODI.MiLANGUAGES.miLANG_JAPANESE;

                case
"18":

                    return
MODI.MiLANGUAGES.miLANG_KOREAN;

                case
"19":

                    return
MODI.MiLANGUAGES.miLANG_DUTCH;

                case
"20":

                    return
MODI.MiLANGUAGES.miLANG_NORWEGIAN;

                case
"21":

                    return
MODI.MiLANGUAGES.miLANG_POLISH;

                case
"22":

                    return
MODI.MiLANGUAGES.miLANG_PORTUGUESE;

                case
"25":

                    return
MODI.MiLANGUAGES.miLANG_RUSSIAN;

                case
"29":

                    return
MODI.MiLANGUAGES.miLANG_SWEDISH;

                case
"31":

                    return
MODI.MiLANGUAGES.miLANG_TURKISH;

                case
"1028":

                    return
MODI.MiLANGUAGES.miLANG_CHINESE_TRADITIONAL;

                default:

                    return
MODI.MiLANGUAGES.miLANG_ENGLISH;

            }

        }

        /// <summary>

        ///  Images轉換文字

        /// </summary>

        /// <param name="image">Image</param>

        /// <param name="language">语言类型</param>

        /// <returns></returns>

        public
static string ExtractText(this
System.Drawing.Image image,string
language)

        {

            var
tmpFile = Path.GetTempFileName();

            StringBuilder sb = new
StringBuilder();

            //string text;

            try

            {

                var
bmp = new
Bitmap(Math.Max(image.Width, 1024), Math.Max(image.Height, 768));

                var
gfxResize = Graphics.FromImage(bmp);

                gfxResize.DrawImage(image, new
Rectangle(0, 0, image.Width, image.Height));

                bmp.Save(tmpFile + ".bmp", ImageFormat.Bmp);

                var
doc = new
MODI.Document();

                doc.Create(tmpFile + ".bmp");

                // doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true);

                doc.OCR(GetLanuageType(language), true, true);  // 识别文字类型

                var
img = (MODI.Image)doc.Images[0];

                var
layout = img.Layout;

                sb.Append(layout.Text);

                //text = sb.ToString();// layout.Text;

            }

            finally

            {

                File.Delete(tmpFile);

                File.Delete(tmpFile + ".bmp");

            }

            return
sb.ToString();// text;

        }

        /// <summary>

        /// 来源图片文件轉換文字

        /// </summary>

        /// <param name="fileToOCR">file文件</param>

        /// <param name="language">语言类型</param>

        /// <returns></returns>

        public
static string getFileToOCR(string
fileToOCR, string
language)

        {

            StringBuilder sb = new
StringBuilder();

            if
(File.Exists(fileToOCR))

            {

                MODI.Document md = new
MODI.Document();

                md.Create(fileToOCR);

                md.OCR(GetLanuageType(language), true, true);

                MODI.Image img;

                MODI.Layout layout;

                for
(int
i = 0; i < md.Images.Count; i++)

                {

                    img = (MODI.Image)md.Images[i];

                    layout = img.Layout;

                    sb.Append(layout.Text);

                }

                md.Close(false);

                

            }

            else

            {

                sb.Append("");

            }

             return
sb.ToString();

        }

    }

}

csharp:Optical Character Recognition

时间: 2024-10-12 20:29:34

csharp:Optical Character Recognition的相关文章

【USACO 5.4.2】Character Recognition

题目大意 一个字符可以表示成一个20*20的01矩阵.它们都在一个叫“fout.in”,共有27个字符,就是空格+小写字母(按字典序从小到大排序).现在要翻译一个N*20的01矩阵,也就是按“fout.in”匹配每个字符,最后N*20的矩阵变成一个字符串.可惜的是这个N*20的矩阵可能遭到破坏. 每个字符可能遭到如下破坏 1.最多有一行可能被复制了(就接在原来那一行的下面) 2.最多有一行可能丢失了 3.有些“0”可能被改成“1” 4.有些“1”可能被改成“0” 被复制的一行也有可能被替换01.

OCR 即 光学字符识别

OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗.亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程:即,对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程.如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题,ICR(Intelligent Character Recognition)的名词也因此而产生.衡量一个OCR系统性能好坏的主要指标有:拒识率

Tesseract-OCR 字符识别---样本训练

转自:http://blog.csdn.net/feihu521a/article/details/8433077 Tesseract是一个开源的OCR(Optical Character Recognition,光学字符识别)引擎,可以识别多种格式的图像文件并将其转换成文本,目前已支持60多种语言(包括中文). Tesseract最初由HP公司开发,后来由Google维护,目前发布在Googel Project上.地址为http://code.google.com/p/tesseract-oc

近邻搜索算法

最近邻搜索(Nearest Neighbor Search) Name of the problem: nearest neighbors, k nearest neighbors (kNN, k-NN), nearset neighbor search, proximity search, similarity search, approximate nearest neighbors (ANN), range queries, maximal intersection queries, po

关于PGM在OCR方面的应用

本文仅仅是一个简单的PGM在OCR方面的应用的实践. 仅此记录下来实现的思路. OCR(Optical Character Recognition)即是将手写的文字用计算机自动的识别出来,然后输送到计算机里. OCR目前仍然没有完全成功的产品.但是不论OCR再进行优化,他的基本思路都是相同的. 在此,我仅仅使用到了两个比较通用的OCR方面的优化方法进行说明. 首先最基本的,就是直接通过采集到的手写体问题图片进行识别,我们假定前后的letters之间没有任何的关联. 使用softmax,DL或者任

C++开源代码项目汇总

Google的C++开源代码项目 v8  -  V8 JavaScript EngineV8 是 Google 的开源 JavaScript 引擎.V8 采用 C++ 编写,可在谷歌浏览器(来自 Google 的开源浏览器)中使用.V8 根据 ECMA-262 第三版中的说明使用 ECMAScript,并在使用 IA-32 或 ARM 处理器的 Windows XP 和 Vista.Mac OS X 10.5 (Leopard) 以及 Linux 系统中运行.V8 可以独立运行,也可以嵌入任何

OCR 基本知识

OCR,optical character recognition 的简称,也就是光学识别系统,属于图形识别的一个分支,OCR是针对印刷体字符,采用光学的方式将文档资料转换成原始资料黑白点阵的图像文件,通过识别软件将图像中的文字识别成中文和英文内码,然后转换成文本格式.这样计算机就可以通过OCR识别系统,可以清楚自己看到了什么,读到了什么,尤其是文字资料. (1)处理过程: 影像输入->影像前处理->文字特征的提取->对比识别->最后通过人工矫正将误判的文字更正,最后将结果输出.

Tesseract 3 语言数据的训练方法

OCR,光学字符识别 光学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程.OCR技术非常专业,一般多是印刷.打印行业的从业人员使用,可以快速的将纸质资料转换为电子资料.关于中文OCR,目前国内水平较高的有清华文通.汉王.尚书,其产品各有千秋,价格不菲.国外OCR发展较早,像一些大公司,如IBM.微软.HP等,即使没有推出单独的OCR产品,但是他们的研发团队早已掌握核心技术,将OCR功能植入

编程思想与算法

常用编程思想与算法 本文是在阅读Aditya Bhargava先生算法图解一书所做的总结,文中部分代码引用了原文的代码,在此感谢Aditya Bhargava先生所作出的这么简单的事例,对基础算法感兴趣的朋友可以阅读原文.由于本人也是编程初学者,所以本书比较浅显易懂,所介绍的算法配上插图也十分易懂,这里只是介绍几种最基础的算法由浅入深以帮助理顺一些简单的思维逻辑. 算法简介 算法是一组完成任务的指令.任何代码片段都可视为算法,我们这里讨论的算法要么速度快,要么能解决有趣的问题,要么兼而有之. 二