数学建模社区-数学中国

标题: 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+ [" bimport base64( |' @$ H2 i, L  A- O' p4 N+ n6 _
from os.path import exists8 J& X2 ~* e  \- ~: N9 T
from tkinter import Tk5 @3 R  B" v; O5 @
from tkinter.filedialog import askopenfilename
7 W, a) [1 U3 A$ C* Ofrom urllib.parse import urlencode
4 T* C+ m, ^% U' h# G7 x8 X% X
4 `# Z* L0 v' a) ]1 U' I3 Z; gimport requests
) S9 ?$ Q* Z& x* N3 j* ]3 \1 s1 u- P

5 E$ M  k+ \+ q/ ~5 Tdef 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 mdef 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 Hif __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