python提取图片中的文字

OCR,全称Optical character recognition,中文译名叫做光学文字识别。它把图像中的字符,换为机器编码的文本的一种方法。OCR技术在印刷行业应用得非常多,也广泛用于识别图片中的文字数据 – 比如护照,支票,银行声明,收据,统计表单,邮件等。

pytesseract,即Python-tesseract,是Google Tesseract ORC引擎的封装。首次于2014年提出,支持的图片格式有’JPEG’, ‘PNG’, ‘PBM’, ‘PGM’, ‘PPM’, ‘TIFF’, ‘BMP’, ‘GIF’,只需要简短的代码就能够提取图片中的字符合文字了,极大方便文字工作。

准备工作

1,安装pillow或者PIL,主要用来打开本地图片

pip install PIL
pip install pillow

2,安装pytesseract,主要用来将图片里面文字化字符串或者pdf

pip install pytesseract

3,安装 Tesseract-OCR应用程序

进入 ​​https://pan.baidu.com/s/1qXumxdltxOnb0geaE_1U-Q​​下载安装

4,修改 pytesseract 源码中的路径

进入D:\Anaconda3\Lib\site-packages\pytesseract,用Notepad++打开pytesseract.py,将源码第26行的路径修改成安装Tesseract-OCR应用程序路径。

python提取图片中的文字_图像识别

tesseract_cmd = 'tesseract.exe'

修改成

tesseract_cmd = r'D:\Program Files\Tesseract-OCR\tesseract.exe'

5,安装中文字库

进入​​https://pan.baidu.com/s/1GfspC5uef73B2Oa8YudBgQ​​,下载中文库复制到 Tesseract-OCR 安装目录下的 tessdata 文件夹中

python提取图片中的文字_OCR_02

原图片

python提取图片中的文字_图像识别_03

完整代码

from PIL import Image
import pytesseract

image = Image.open("粉丝.jpg") #打开图片
#print(image.size) #测试图片像素尺寸
text = pytesseract.image_to_string(image, lang='chi_sim') #图片转字符串
text = text.replace("“ ","").replace("。","") #去掉杂质,提纯
print(text) #测试结果

结果预览

    

634

1 133 21.0%
2 64 10.1%8
3 34 5.4%
4 广 19 3.0%
5 18 2.8%
6 16 2.5%
7 13 2.1%
8 12 1.9%
9 1 1.7%
10 1 1.7%
10 1.6%
12 9 1.4%
13 8 1.3%
14 西 6 0.9%
15 6 0.9%
16 5 0.8%
17 5 0.8%
18 5 0.8%
19 5 0.8%
20 4 0.6%
21 4 0.6%
22 4 0.6%
23 4 0.6%
24 4 0.6%
25 4
26 4 0.6%
27 3 0.5%
28 3 0.5%
29 3 0.5%
30 3 0.5%
31 3 0.5%
32 3 0.5%
33 3 0.5%
34 3 0.5%
35 3 0.5%
36 3 0.5%
37 3 0.5%
38 3 0.5%
39 3 0.5%
40 3 0.5%
41 3 0.5%
42 2 0.3%
43 怀 2 0.3%
44 2 0.3%
45 2 0.3%
46 2 0.3%
47 2 0.3%
48 2 0.3%
49 2 0.3%
50 2 0.3%
51 2 0.3%
52 2 0.3%
53 2 0.3%
54 2 0.3%
55 广 2 0.3%
56 2 0.3%
57 2 0.3%
58 2 0.3%
59 2 0.3%
60 2 0.3%
61 2 0.3%
62 2 0.3%
63 2 0.3%
64 2 0.3%
65 2 0.3%
66 2 0.3%
67 2 0.3%
68 2 0.3%
69 2 0.3%
70 2 0.3%
71 2 0.3%
72 2 0.3%
73 2 0.3%
74 1 0.2%
75 广 1 0.2%
76 1 0.2%
77 1 0.2%
78 1 0.2%
79 1
80 1 0.2%
81 1 0.2%
s 02x
83 蹇萱黎族自 1 0.2%
84 1 0.2%
85 1 0.2%
86 1 0.2%
87 1 0.2%
88 1 0.2%
89 1 0.2%
90 1 0.2%
91 1 0.2%
92 1 0.2%
93 1 0.2%
94 1 0.2%
95 1 0.2%
96 1 0.2%
97 1 0.2%
98 1 0.2%
99 1 0.2%
100 1 0.2%
101 1 0.2%
102 1 0.2%
103 1 0.2%
104 1 0.2%
105 1 0.2%
106 1 0.2%
107 1 0.2%
108 1 0.2%
109 1 0.2%
10 1 0.2%
111 1 0.2%
112 1 0.2%
113 1 0.2%
14 1 0.2%
115 1 0.2%
116 1 0.2%
117 1 0.2%
8 1 0.2%
119 1 0.2%
120 1 0.2%
121 1 0.2%
122 1 0.2%
123 1 0.2%
124 1 0.2%
125 1 0.2%
126 1 0.2%
127 1 0.2%
128 1 0.2%
129 1 0.2%
130 1 0.2%
131 1 0.2%
132 1 0.2%
133 1 0.2%
134 1 0.2%
135 1 0.2%
136 1 0.2%
137 _ 1 0.2%
138 1 0.2%
139 1 0.2%
140 1 0.2%
141 1 0.2%
142 1 0.2%
143 1 0.2%
144 1 0.2%
145 1 0.2%
146 1 0.2%
147 1 0.2%
148 1 0.2%
149 1 0.2%
150 1 0.2%
151 1 0.2%
152 1 0.2%
153 1 0.2%
154 1 0.2%
155 1 0.2%
156 1 0.2%
157 1 0.2%
158 1 0.2%
159 1 0.2%
160 1 0.2%
161 1 0.2%
162 1 0.2%
163 1 0.2%
164 1 0.2%
165 1 0.2%
166 1 0.2%
167 1 0.2%
168 1 0.2%
169 1 0.2%
170 1 0.2%
171 1 0.2%
172 1 0.2%
173 1 0.2%
174 1 0.2%
175 1 0.2%
176 1 0.2%
177 1 0.2%
178 1 0.2%
179 1 0.2%

结果还是不错的,90%都识别出来了,只是汉字之间都是空格隔开,可以考虑replace掉。

参考文献

1,https://github.com/madmaze/pytesseract

python提取图片中的文字_pytesseract_04