数学建模社区-数学中国
标题:
Python-百度ocr识别
[打印本页]
作者:
檀俾九
时间:
2021-1-12 09:38
标题:
Python-百度ocr识别
9 r" U" f7 q2 d/ P- r$ P0 w: F
[code=python]#!/usr/bin/python
' i) h* d2 i# ~% T
# -*- coding: utf-8 -*-
0 a+ f& e. J: x, P+ d F
3 ^' J2 s& O+ [" b
import base64
( |' @$ H2 i, L A- O' p4 N+ n6 _
from os.path import exists
8 J& X2 ~* e \- ~: N9 T
from tkinter import Tk
5 @3 R B" v; O5 @
from tkinter.filedialog import askopenfilename
7 W, a) [1 U3 A$ C* O
from urllib.parse import urlencode
4 T* C+ m, ^% U' h# G7 x8 X% X
4 `# Z* L0 v' a) ]1 U' I3 Z; g
import requests
) S9 ?$ Q* Z& x
* N3 j* ]3 \1 s1 u- P
5 E$ M k+ \+ q/ ~5 T
def Dialog_box():
" @* T# W5 t& S B) b) ]
root = Tk()
/ |8 K! ^( b: c/ e' W# T) D! g
root.withdraw()
! T0 X0 L7 C. w( p0 d
9 L# a5 }3 b |. V1 K: d
filetypes = [(
; _# C. F3 p6 F. g6 `7 @
'图片文件(*.jpg;*.jpeg;*.gif;*.png;*.bmp)', '*.jpg;*.jpeg;*.gif;*.png;*.bmp'),
2 |; ^! r l0 d. i% J
('所有文件(*.*)', '*.*')]
" H: t" T# C' e$ A/ z, K1 o& F
* _/ k5 D+ L, O7 ?; d
file_path = askopenfilename(filetypes=filetypes)
) T4 ~8 B* \3 U
return file_path
- }4 y4 e9 @) J/ H z5 e
3 P: y) v) X, r' a) E. V
; _0 p( J3 l7 B6 ?. Z0 {7 m
def Read_file(file_path):
1 M C' a( g* L+ K4 h
with open(file_path, mode='rb') as file_object:
! u5 Z0 F b2 b* ? J
contents = file_object.read()
: [' j. _- u' ?/ t8 q/ S
return contents.rstrip()
- P% {) X) I: ^! D1 }
" {7 t. l) {9 b8 o% I2 v
: O; P1 O) ~. F
def Baidu_ocr(binary):
1 ?6 D F& y' J
url = "https://aip.baidubce.com/oauth/2.0/token?"
: ~6 Q3 ]1 \9 D% `8 d2 V
data = {
$ u% v5 y. x) n9 m9 A
"grant_type": "client_credentials",
0 W1 I) P2 y# y- p% c8 W
"client_id": "", # 必填
4 \1 v7 o# H# W9 B" B* [: g: j( }$ G
"client_secret": "" # 必填
9 C/ }8 |9 [" ~, m
}
: D, t. u$ r- z7 D2 N$ p. Z
url += urlencode(data)
* I# K% X R6 U
response = requests.get(url=url).json()
* T, S" K% x6 b8 M" O
access_token = response['access_token']
5 m& B+ o: p% k8 t) |
- _* p& M4 |) s( n) @8 V
url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=" + access_token
, F0 |" U- `4 F% j/ V
post_data = {
* `# D1 U, N+ J O6 q
"image": base64.b64encode(binary),
7 k" h* Q. f# e9 c0 p
"url": "",
?) ]/ q/ e4 Y/ D' j+ [
"language_type": "CHN_ENG",
2 b+ S, v/ A/ n7 o% }
"detect_direction": "false",
/ B8 h6 @, }( @9 A; B! D& {
"detect_language": "false",
, C' C/ {" ?% e
"probability": "false"
& |* p9 u5 C1 i5 |. I2 h
}
8 Y6 I2 k" @# K' P' v* N. e+ v6 G
response = requests.post(url=url, data=post_data).json()
3 H6 y4 a1 _/ P" f0 t
num = response['words_result_num']
, n7 H1 e; A1 K$ \% c7 @! x
result = ''
) d" a4 R3 `' {7 L
for i in range(num):
5 o8 _8 w* N' H; W3 u4 g j5 S8 r( b" V
result += response['words_result'][ i]['words'] + "\r\n"
$ n$ C; G' X% u- q: u
return result
' l9 o/ x& ]$ x+ p$ S% b
' l, d: `5 E* J" p
$ R* R0 J8 F$ R% B0 H
if __name__ == "__main__":
; X; [) w! h/ u) C! \
file_path = Dialog_box()
2 [) q3 U2 p- Q% L% ?! l
if exists(file_path):
. O8 x% u2 _' e4 g7 C% J1 q
data = Read_file(file_path)
- \) M9 e9 B5 b$ s' L# x* [
print(Baidu_ocr(data))
+ V( |9 o3 |3 K u" }
! b- w! K+ U7 x) l. A8 U
[/code]
$ p# I6 ~( M* r8 N
( x l$ q2 V @
6 i, |, \ i$ ]/ a
转发自
派生社区
Python交流群:1047602540
2 A. U( j3 t; ~& l
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5