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_cmd = 'tesseract.exe'
修改成
tesseract_cmd = r'D:\Program Files\Tesseract-OCR\tesseract.exe'
5,安裝中文字庫
進入https://pan.baidu.com/s/1GfspC5uef73B2Oa8YudBgQ,下載中文庫複製到 Tesseract-OCR 安裝目錄下的 tessdata 文件夾中
原圖片
完整代碼
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%
全 部 加 載 完 成
結果還是不錯的,99%dou 識別出來了,只是漢字之間都是空格隔開,可以考慮replace掉。
參考文獻
1,https://github.com/madmaze/pytesseract