数学建模社区-数学中国
标题:
Python-百度ocr识别
[打印本页]
作者:
檀俾九
时间:
2021-1-12 09:38
标题:
Python-百度ocr识别
& z: f. ]9 u! e+ ^. K2 A V
[code=python]#!/usr/bin/python
/ F C9 r3 {9 x: j8 I8 v6 ~
# -*- coding: utf-8 -*-
6 i( M8 t- d6 E* N0 V
" |2 o( }# B, Z8 |
import base64
3 _$ r8 A/ C1 |: n5 I
from os.path import exists
7 y f( a3 \/ g) B0 }; T
from tkinter import Tk
, e- w7 `5 k1 `+ g! M! @
from tkinter.filedialog import askopenfilename
7 Y0 v/ Z) T& ]+ g% t
from urllib.parse import urlencode
% a8 f$ ]& \( W1 S% x6 |, t
, t+ z6 z: Z4 e6 x3 }- H' }
import requests
# p" e$ _1 v+ i5 x0 S
! p- }6 v9 K( G! l: `7 t
2 l5 i4 x' P/ V3 ]7 V; [
def Dialog_box():
E9 u$ ^ e% |. C* S
root = Tk()
" y! C t3 i2 b9 n% a7 I6 b
root.withdraw()
/ T6 w+ K( X! v, @' f! E& r
, l; s" e( B. x; p" |
filetypes = [(
3 r- X d0 _& E3 f% m
'图片文件(*.jpg;*.jpeg;*.gif;*.png;*.bmp)', '*.jpg;*.jpeg;*.gif;*.png;*.bmp'),
$ M1 \9 |, f8 \4 r! q
('所有文件(*.*)', '*.*')]
+ T5 X+ Y1 q! ~2 ]$ q5 ]0 ?$ N
) n( f* B+ c, ?0 F8 q
file_path = askopenfilename(filetypes=filetypes)
- K; k, Q" q& p0 X$ i1 q
return file_path
% C1 W+ [2 S) X7 B
) U2 C! R1 I/ U/ P' {0 `
7 A% j- P5 ^+ D
def Read_file(file_path):
) R" y8 k; T* D5 N
with open(file_path, mode='rb') as file_object:
7 \3 W9 [1 q# }. m! S
contents = file_object.read()
: s2 \4 [7 O" i0 J# v
return contents.rstrip()
0 [: v" k" j8 s: ~- \0 y
1 k3 N R' N5 r' w# h1 t* \0 |1 ^
1 c# C: Y) l. ^% P$ c9 b
def Baidu_ocr(binary):
6 m9 c2 \9 S/ Y5 P+ i6 c# ]
url = "https://aip.baidubce.com/oauth/2.0/token?"
+ Y6 s) g X3 Z: U
data = {
+ u2 R6 }1 O$ u( u( F% ~5 S' k! b+ x) Q
"grant_type": "client_credentials",
% l: E9 O- ]: |1 L
"client_id": "", # 必填
. H5 M5 F, U8 B2 N5 j) ~
"client_secret": "" # 必填
# j' u6 {2 ^% k4 A( ~
}
0 f1 x* v0 u# Y
url += urlencode(data)
7 g, V( l* o8 W! h. F
response = requests.get(url=url).json()
- x0 w& F! Y4 Z" {6 p* o6 O7 c0 L s$ @
access_token = response['access_token']
# f- n! ~# L" v
1 J0 g) l4 q* [5 I/ U8 k! Q
url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=" + access_token
7 `! D3 D2 ]7 _: @2 h* ]) a
post_data = {
! W" N; f4 x, T. d8 ]. Y v% G
"image": base64.b64encode(binary),
% M3 Z6 N, h) m. t$ U2 P& H
"url": "",
. P: O3 R: b% \$ v; q
"language_type": "CHN_ENG",
8 Y c* y k* ?# f& J
"detect_direction": "false",
" N2 L/ r0 h4 ]- n4 U. N
"detect_language": "false",
- l3 q" J M' {. U
"probability": "false"
- J+ j$ P: F0 |* B( C0 [6 T2 e
}
5 r% P* _- q$ V' Q2 B2 {; f1 F
response = requests.post(url=url, data=post_data).json()
3 i) ]5 L c l5 s5 D
num = response['words_result_num']
; v5 [; A: C& q3 l5 x) ?; r
result = ''
, I1 `- d% O4 Y/ @# R+ n
for i in range(num):
0 o) b' n3 y7 Y4 M- s5 y
result += response['words_result'][ i]['words'] + "\r\n"
7 j7 J+ p# d" C7 y; l. M: o$ W
return result
5 a. w w; W! c/ d% \
4 P- W! G; F" A! ^
6 X( q) W. M7 P
if __name__ == "__main__":
# B4 k4 q$ |2 m# l
file_path = Dialog_box()
& S$ w8 D/ x9 S, A/ p% @3 u" M1 w* t
if exists(file_path):
# T: R" |7 m. d7 f3 ?, F
data = Read_file(file_path)
/ x Z0 L0 y/ s1 N9 {% w5 o0 ^) x0 z
print(Baidu_ocr(data))
# }8 s% B2 f. `$ G" i" m
: T& e* Q" p# Z
[/code]
+ v3 ^/ n; E& T' N2 l% Y" G
+ Y( A7 Z2 e5 e% C
0 l2 w m" a8 ~6 m% S
转发自
派生社区
Python交流群:1047602540
3 C' B+ }" p1 v% {8 [. H% P4 K" c3 _0 t
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5