Class: TxOcr::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/tx_ocr/base.rb

Direct Known Subclasses

Image, Text

Constant Summary collapse

HOST =
'ocr.tencentcloudapi.com'

Instance Method Summary collapse

Instance Method Details

#encode_parametersObject



43
44
45
46
47
48
# File 'lib/tx_ocr/base.rb', line 43

def encode_parameters
  new_hash = fixed_paramaters
  new_hash['Action'] = @ocr_type
  new_hash['ImageUrl'] = encoded_image_url
  to_params(new_hash)
end

#fixed_paramatersObject



50
51
52
# File 'lib/tx_ocr/base.rb', line 50

def fixed_paramaters
  { 'Nonce' => '2373', 'Region' => region, 'SecretId' => secret_id, 'Timestamp' => Time.now.to_i.to_s, 'Version' => '2018-11-19' }
end

#full_request_urlObject



74
75
76
# File 'lib/tx_ocr/base.rb', line 74

def full_request_url
  url + request_params
end

#indent_resultObject



95
96
97
98
99
100
101
102
103
104
105
# File 'lib/tx_ocr/base.rb', line 95

def indent_result
  if json['Response']['Error']
    json
  else
    new_content = raw_result.join('')

    new_content = new_content.gsub('', "。\n\n")

    new_content
  end
end

#jsonObject



82
83
84
# File 'lib/tx_ocr/base.rb', line 82

def json
  JSON.parse(request_object.body)
end

#orginal_parametersObject



36
37
38
39
40
41
# File 'lib/tx_ocr/base.rb', line 36

def orginal_parameters
  new_hash = fixed_paramaters
  new_hash['Action'] = @ocr_type
  new_hash['ImageUrl'] = remote_image_url
  to_params(new_hash)
end

#raw_resultObject



86
87
88
89
90
91
92
93
# File 'lib/tx_ocr/base.rb', line 86

def raw_result
  if json['Response']['Error']
    json
  else
    original_data = json['Response']['TextDetections']
    original_data.map { |h| h['DetectedText'] }
  end
end

#regionObject



20
21
22
# File 'lib/tx_ocr/base.rb', line 20

def region
  TxOcr.config[:region]
end

#request_objectObject



78
79
80
# File 'lib/tx_ocr/base.rb', line 78

def request_object
  HTTParty.get(url + request_params)
end

#request_paramsObject



70
71
72
# File 'lib/tx_ocr/base.rb', line 70

def request_params
  "/?#{encode_parameters}&Signature=#{signature}"
end

#secret_idObject



28
29
30
# File 'lib/tx_ocr/base.rb', line 28

def secret_id
  TxOcr.config[:secret_id]
end

#secret_keyObject



32
33
34
# File 'lib/tx_ocr/base.rb', line 32

def secret_key
  TxOcr.config[:secret_key]
end

#signatureObject



63
64
65
66
67
68
# File 'lib/tx_ocr/base.rb', line 63

def signature
  digest = OpenSSL::Digest.new('sha1')
  hmac = OpenSSL::HMAC.digest(digest, secret_key, string_for_sign)
  encrypt = Base64.encode64(hmac).delete("\n")
  encrypt.gsub('+', '%2B') # 处理 + 号
end

#string_for_signObject



59
60
61
# File 'lib/tx_ocr/base.rb', line 59

def string_for_sign
  "GET#{HOST}/?" + orginal_parameters
end

#to_params(original_hash) ⇒ Object



54
55
56
57
# File 'lib/tx_ocr/base.rb', line 54

def to_params(original_hash)
  sorted_by_key = Hash[original_hash.sort]
  sorted_by_key.map { |x| "#{x[0]}=#{x[1]}" }.join('&')
end

#urlObject



24
25
26
# File 'lib/tx_ocr/base.rb', line 24

def url
  "https://#{HOST}"
end