数学建模社区-数学中国
标题:
Python-百度ocr识别
[打印本页]
作者:
檀俾九
时间:
2021-1-12 09:38
标题:
Python-百度ocr识别
3 ^7 h0 ]7 g3 u4 ^' x
[code=python]#!/usr/bin/python
1 c+ [# b& i. A7 f: ~' c* k
# -*- coding: utf-8 -*-
7 {8 g, b G( E* \# t% v! I
6 D8 w7 z( y9 x
import base64
8 n, N y' X8 V d
from os.path import exists
c) X, Y# I5 E2 U: S8 ?
from tkinter import Tk
5 W! } ]/ \- N5 Q) w
from tkinter.filedialog import askopenfilename
, ~+ i* n+ V8 u( W
from urllib.parse import urlencode
9 Q; T5 D3 ~& X4 V7 K: m
: E: C% B- P4 i& A% g
import requests
G* r. C# ~% t
b# r+ {- z+ U* h- ~0 C
, E) n* x. h! t; }- N
def Dialog_box():
8 |! K% P: [5 q0 b( ?
root = Tk()
- A4 ?7 {& k9 r4 A
root.withdraw()
- L. ]/ ~0 u6 v$ W: k: u
. s" U! k- x" q0 A" M
filetypes = [(
, {' G& Y# A% @! w. t
'图片文件(*.jpg;*.jpeg;*.gif;*.png;*.bmp)', '*.jpg;*.jpeg;*.gif;*.png;*.bmp'),
- V% |2 w4 P3 E, N0 i1 c6 ~
('所有文件(*.*)', '*.*')]
! D4 q; X3 F" X" H
' m8 g8 n0 R6 q* N
file_path = askopenfilename(filetypes=filetypes)
" \7 }7 c" N" i5 C
return file_path
+ Y2 R* E0 O m6 Y, E4 e* d
7 E5 t: y7 w9 l
& Z; ]( |5 X! t$ _7 G" v/ ~ }" t
def Read_file(file_path):
8 g6 S4 h X3 g @. T6 ^' Z5 Q
with open(file_path, mode='rb') as file_object:
; c! @6 ~/ N& g4 b; h6 C0 {0 m8 `' A9 U
contents = file_object.read()
* `: T7 U& G. w+ M7 b+ I
return contents.rstrip()
$ B v% d0 Y; c1 r9 q+ U6 q
1 W# |$ Y4 D5 s1 y; \) [3 }7 {) g
U# I# E: |! c5 m+ O
def Baidu_ocr(binary):
5 \ X3 ?+ f$ k1 D+ n4 b
url = "https://aip.baidubce.com/oauth/2.0/token?"
5 ^: M! a, }# m# k
data = {
* l) s# h' Z! ~( D. j4 \
"grant_type": "client_credentials",
! k/ ]+ L% M: m/ n+ k% k( U. G" n
"client_id": "", # 必填
% I, h/ b$ `6 |0 A5 a* z4 @( U
"client_secret": "" # 必填
! X9 ]# l [9 F
}
; A: |$ a8 I9 x: O' B i, J, s
url += urlencode(data)
) W5 y& q; c4 a: F d
response = requests.get(url=url).json()
# r+ Z3 Z/ r1 |/ s, X1 _& y
access_token = response['access_token']
* m: t- b, ?. A5 V+ D
5 {& l# G; G. S' {9 E' E* g
url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=" + access_token
, ~4 b+ B' f$ N& o( E" i
post_data = {
5 m" z* S8 f5 b. }, P
"image": base64.b64encode(binary),
6 Y- S0 K. v3 ^0 ]% s
"url": "",
3 m$ r8 N1 T& V- R/ [
"language_type": "CHN_ENG",
\# w# r, c- I( E5 n( c
"detect_direction": "false",
! W# S. A& x7 T9 O: L/ v
"detect_language": "false",
1 N9 K+ \6 N- G, j9 }$ ~/ B
"probability": "false"
0 @4 j% i: _" q2 w0 d- d
}
5 U: n9 r' s. ?8 z0 _
response = requests.post(url=url, data=post_data).json()
) [' m5 a/ x* }7 v$ M. m/ E
num = response['words_result_num']
0 F& d8 F4 {: E
result = ''
) j3 _+ V: ~# `4 M/ O! v
for i in range(num):
. m) L0 i7 X; Z9 { E
result += response['words_result'][ i]['words'] + "\r\n"
; S' G8 W+ j! ~; q6 y
return result
" x/ o! E$ a, q
s' G) l- S1 h- p
% f! {* |% j! e/ N. T
if __name__ == "__main__":
4 X$ F3 \0 Z% L/ e4 q" d
file_path = Dialog_box()
_8 d! V1 R9 G" Q6 N7 Z9 R
if exists(file_path):
2 g6 E6 `' Y+ D) w+ q: `' a2 C
data = Read_file(file_path)
% W B( `( d2 f: Q/ Q. E$ o
print(Baidu_ocr(data))
6 E' Q7 J- s) k+ I
; y" z: Y2 z( i5 g, p& V! c
[/code]
( a. `: U3 e7 I! y6 |
' {3 B! A' ?' m; J0 m4 g4 }
4 `5 r3 F: y/ w2 |: F, N$ b
转发自
派生社区
Python交流群:1047602540
8 {, ^, f2 c" `6 r0 u0 \
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5