数学建模社区-数学中国

标题: 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  dfrom os.path import exists
  c) X, Y# I5 E2 U: S8 ?from tkinter import Tk
5 W! }  ]/ \- N5 Q) wfrom tkinter.filedialog import askopenfilename
, ~+ i* n+ V8 u( Wfrom 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* d7 E5 t: y7 w9 l

& Z; ]( |5 X! t$ _7 G" v/ ~  }" tdef 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+ Odef 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