veryfi 0.1.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c0b98174bc21d552218a407a17a0801218b4a93c76adbd6676d081e6c98eb9c7
4
- data.tar.gz: edf7a6c1f283eb3d2f4369554c72dd6fb627674b2dc752f1040f145537197946
3
+ metadata.gz: 6a8a7ef98c7b70d163aa1913799e26981c1a3297e510cf561c1ad7295791c037
4
+ data.tar.gz: 2fadf010651b719a5849c229f0db4ade66332dc93fc789e28ca7c76c4f53952a
5
5
  SHA512:
6
- metadata.gz: 21251717fe8fe9e0c424700ff1d1b0776f089cabe764fb55c3abf5509eb94014021bdaf64cbe8fbe1571f2840049b0c02367a655d5fa6f6887cd924cfdbb4363
7
- data.tar.gz: 603f846c3eb5376b2c21380c7b47a2544203fde58beb88a310e582643b58e38589c785551710b4d992feaf38625d55c77d3a95efd3f00751276f84382021d6b1
6
+ metadata.gz: a1c27daa4725f3e8c112fbbb49aee4f0b724aede5135152c5879ae4bcfd6c2747764dbf891a02e0199a64511b99ca0499d70315a64dfa1859153c53617f780e3
7
+ data.tar.gz: e600661fdde8df1cfa89c7d804cb7a32a215a53e3d59522eeea8ed012a654c4f693ad85207efa532e5fc6d3f80efa32eda450d49c96fbd8510a8430027ef21a9
@@ -1,9 +1,7 @@
1
1
  name: Release
2
-
3
2
  on:
4
- workflow_dispatch:
5
- branches:
6
- - main
3
+ release:
4
+ types: [created]
7
5
 
8
6
  jobs:
9
7
  publish:
@@ -22,5 +20,5 @@ jobs:
22
20
  env:
23
21
  RUBYGEMS_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }}
24
22
  RELEASE_COMMAND: bin/release
25
- GIT_EMAIL: slava@skdev.info
23
+ GIT_EMAIL: support@veryfi.com
26
24
  GIT_NAME: Github Action
@@ -1,6 +1,8 @@
1
1
  name: Test
2
2
 
3
- on: [push, pull_request]
3
+ on:
4
+ pull_request:
5
+ branches: [ main ]
4
6
 
5
7
  jobs:
6
8
  build:
data/.gitignore CHANGED
@@ -18,3 +18,4 @@ _yardoc
18
18
  doc/
19
19
 
20
20
  .env
21
+ .idea/
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- veryfi (0.1.2)
4
+ veryfi (1.0.0)
5
5
  base64 (~> 0.1)
6
6
  faraday (~> 1.7)
7
7
  openssl (~> 2.2)
@@ -12,7 +12,7 @@ GEM
12
12
  addressable (2.8.0)
13
13
  public_suffix (>= 2.0.2, < 5.0)
14
14
  ast (2.4.2)
15
- base64 (0.1.0)
15
+ base64 (0.1.1)
16
16
  bundler-audit (0.9.0)
17
17
  bundler (>= 1.2.0, < 3)
18
18
  thor (~> 1.0)
@@ -21,29 +21,35 @@ GEM
21
21
  rexml
22
22
  diff-lcs (1.4.4)
23
23
  docile (1.4.0)
24
- faraday (1.7.1)
24
+ faraday (1.10.0)
25
25
  faraday-em_http (~> 1.0)
26
26
  faraday-em_synchrony (~> 1.0)
27
27
  faraday-excon (~> 1.1)
28
- faraday-httpclient (~> 1.0.1)
28
+ faraday-httpclient (~> 1.0)
29
+ faraday-multipart (~> 1.0)
29
30
  faraday-net_http (~> 1.0)
30
- faraday-net_http_persistent (~> 1.1)
31
+ faraday-net_http_persistent (~> 1.0)
31
32
  faraday-patron (~> 1.0)
32
33
  faraday-rack (~> 1.0)
33
- multipart-post (>= 1.2, < 3)
34
+ faraday-retry (~> 1.0)
34
35
  ruby2_keywords (>= 0.0.4)
35
36
  faraday-em_http (1.0.0)
36
37
  faraday-em_synchrony (1.0.0)
37
38
  faraday-excon (1.1.0)
38
39
  faraday-httpclient (1.0.1)
40
+ faraday-multipart (1.0.3)
41
+ multipart-post (>= 1.2, < 3)
39
42
  faraday-net_http (1.0.1)
40
43
  faraday-net_http_persistent (1.2.0)
41
44
  faraday-patron (1.0.0)
42
45
  faraday-rack (1.0.0)
46
+ faraday-retry (1.0.3)
43
47
  hashdiff (1.0.1)
48
+ ipaddr (1.2.4)
44
49
  method_source (1.0.0)
45
50
  multipart-post (2.1.1)
46
- openssl (2.2.0)
51
+ openssl (2.2.1)
52
+ ipaddr
47
53
  parallel (1.20.1)
48
54
  parser (3.0.2.0)
49
55
  ast (~> 2.4.1)
@@ -103,6 +109,7 @@ GEM
103
109
  hashdiff (>= 0.4.0, < 2.0.0)
104
110
 
105
111
  PLATFORMS
112
+ ruby
106
113
  x86_64-darwin-19
107
114
  x86_64-linux
108
115
 
data/README.md CHANGED
@@ -3,14 +3,15 @@
3
3
  ![Veryfi Logo](https://cdn.veryfi.com/logos/veryfi-logo-wide-github.png)
4
4
 
5
5
  [![Version](https://img.shields.io/gem/v/veryfi)](https://rubygems.org/gems/veryfi)
6
- [![Test](https://github.com/slavakisel/veryfi-ruby/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/slavakisel/veryfi-ruby/actions/workflows/test.yml)
6
+ [![Test](https://github.com/veryfi/veryfi-ruby/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/veryfi/veryfi-ruby/actions/workflows/test.yml)
7
7
 
8
- [![Coverage](https://raw.githubusercontent.com/slavakisel/veryfi-ruby/main/coverage/coverage-badge.png)](https://raw.githubusercontent.com/slavakisel/veryfi-ruby/main/coverage/coverage-badge.png)
8
+ [![Coverage](https://raw.githubusercontent.com/veryfi/veryfi-ruby/main/coverage/coverage-badge.png)](https://raw.githubusercontent.com/veryfi/veryfi-ruby/main/coverage/coverage-badge.png)
9
9
 
10
10
  ## Table of Contents
11
11
 
12
12
  - [Veryfi SDK for Ruby](#veryfi-sdk-for-ruby)
13
13
  - [Table of Contents](#table-of-contents)
14
+ - [Example](#example)
14
15
  - [Installation](#installation)
15
16
  - [Getting Started](#getting-started)
16
17
  - [Obtaining Client ID and user keys](#obtaining-client-id-and-user-keys)
@@ -23,6 +24,202 @@
23
24
 
24
25
  **veryfi-ruby** is a Ruby gem for communicating with the [Veryfi OCR API](https://veryfi.com/api/)
25
26
 
27
+ ## Example
28
+
29
+ Below is a sample script using <a href="https://www.veryfi.com" target="_blank">**Veryfi**</a> for OCR and extracting data from a document:
30
+
31
+ ```ruby
32
+ require 'veryfi'
33
+
34
+ veryfi_client = Veryfi::Client.new(
35
+ client_id: 'your_client_id',
36
+ client_secret: 'your_client_secret',
37
+ username: 'your_username',
38
+ api_key: 'your_password'
39
+ )
40
+ ```
41
+
42
+ This submits a document for processing (3-5 seconds for a response)
43
+
44
+ ```ruby
45
+ params = {
46
+ file_path: './test/receipt.jpg',
47
+ auto_delete: true,
48
+ boost_mode: false,
49
+ async: false,
50
+ external_id: '123456789',
51
+ max_pages_to_process: 10,
52
+ tags: ['tag1'],
53
+ categories: [
54
+ 'Advertising & Marketing',
55
+ 'Automotive'
56
+ ]
57
+ }
58
+
59
+ response = veryfi_client.document.process(params)
60
+
61
+ puts response
62
+ ```
63
+
64
+ ...or with a URL
65
+
66
+ ```ruby
67
+ params = {
68
+ file_url: 'https://raw.githubusercontent.com/veryfi/veryfi-python/master/tests/assets/receipt_public.jpg',
69
+ auto_delete: true,
70
+ boost_mode: false,
71
+ async: false,
72
+ external_id: '123456789',
73
+ max_pages_to_process: 10,
74
+ tags: ['tag1'],
75
+ categories: [
76
+ 'Advertising & Marketing',
77
+ 'Automotive'
78
+ ]
79
+ }
80
+
81
+ response = veryfi_client.document.process_url(params)
82
+
83
+ puts response
84
+ ```
85
+
86
+ This will produce the following response:
87
+
88
+ ```json
89
+ {
90
+ "abn_number": "",
91
+ "account_number": "",
92
+ "bill_to_address": "2 Court Square\nNew York, NY 12210",
93
+ "bill_to_name": "John Smith",
94
+ "bill_to_vat_number": "",
95
+ "card_number": "",
96
+ "cashback": 0,
97
+ "category": "Repairs & Maintenance",
98
+ "created": "2021-06-28 19:20:02",
99
+ "currency_code": "USD",
100
+ "date": "2019-02-11 00:00:00",
101
+ "delivery_date": "",
102
+ "discount": 0,
103
+ "document_reference_number": "",
104
+ "document_title": "",
105
+ "document_type": "invoice",
106
+ "due_date": "2019-02-26",
107
+ "duplicate_of": 37055375,
108
+ "external_id": "",
109
+ "id": 37187909,
110
+ "img_file_name": "receipt.png",
111
+ "img_thumbnail_url": "https://scdn.veryfi.com/receipts/thumbnail.png",
112
+ "img_url": "https://scdn.veryfi.com/receipts/receipt.png",
113
+ "insurance": "",
114
+ "invoice_number": "US-001",
115
+ "is_duplicate": 1,
116
+ "line_items": [
117
+ {
118
+ "date": "",
119
+ "description": "Front and rear brake cables",
120
+ "discount": 0,
121
+ "id": 68004313,
122
+ "order": 0,
123
+ "price": 100,
124
+ "quantity": 1,
125
+ "reference": "",
126
+ "section": "",
127
+ "sku": "",
128
+ "tax": 0,
129
+ "tax_rate": 0,
130
+ "total": 100,
131
+ "type": "product",
132
+ "unit_of_measure": ""
133
+ },
134
+ {
135
+ "date": "",
136
+ "description": "New set of pedal arms",
137
+ "discount": 0,
138
+ "id": 68004315,
139
+ "order": 1,
140
+ "price": 15,
141
+ "quantity": 2,
142
+ "reference": "",
143
+ "section": "",
144
+ "sku": "",
145
+ "tax": 0,
146
+ "tax_rate": 0,
147
+ "total": 30,
148
+ "type": "product",
149
+ "unit_of_measure": ""
150
+ },
151
+ {
152
+ "date": "",
153
+ "description": "Labor 3hrs",
154
+ "discount": 0,
155
+ "id": 68004316,
156
+ "order": 2,
157
+ "price": 5,
158
+ "quantity": 3,
159
+ "reference": "",
160
+ "section": "",
161
+ "sku": "",
162
+ "tax": 0,
163
+ "tax_rate": 0,
164
+ "total": 15,
165
+ "type": "service",
166
+ "unit_of_measure": ""
167
+ }
168
+ ],
169
+ "notes": "",
170
+ "ocr_text": "\n\fEast Repair Inc.\n1912 Harvest Lane\nNew York, NY 12210\n\nBILL TO\t\tSHIP TO\tRECEIPT #\tUS-001\nJohn Smith\t\tJohn Smith\tRECEIPT DATE\t11/02/2019\n2 Court Square\t3787 Pineview Drive\n\tP.O.#\t2312/2019\nNew York, NY 12210\tCambridge, MA 12210\n\tDUE DATE\t26/02/2019\nReceipt Total\t\t\t$154.06\n\nQTY DESCRIPTION\t\t\tUNIT PRICE\tAMOUNT\n1\tFront and rear brake cables\t\t100.00\t100.00\n2\tNew set of pedal arms\t\t\t15.00\t30.00\n3\tLabor 3hrs\t\t\t\t5.00\t15.00\n\n\tSubtotal\t145.00\n\tSales Tax 6.25%\t9.06\n\nTERMS & CONDITIONS\nPayment is due within 15 days\nPlease make checks payable to: East Repair\n\tJohn Smith\n\tInc.\n",
171
+ "order_date": "",
172
+ "payment_display_name": "",
173
+ "payment_terms": "15 days",
174
+ "payment_type": "",
175
+ "phone_number": "",
176
+ "purchase_order_number": "2312/2019",
177
+ "rounding": 0,
178
+ "service_end_date": "",
179
+ "service_start_date": "",
180
+ "ship_date": "",
181
+ "ship_to_address": "3787 Pineview Drive\nCambridge, MA 12210",
182
+ "ship_to_name": "John Smith",
183
+ "shipping": 0,
184
+ "store_number": "",
185
+ "subtotal": 145,
186
+ "tax": 9.06,
187
+ "tax_lines": [
188
+ {
189
+ "base": 0,
190
+ "name": "Sales",
191
+ "order": 0,
192
+ "rate": 6.25,
193
+ "total": 9.06
194
+ }
195
+ ],
196
+ "tip": 0,
197
+ "total": 154.06,
198
+ "total_weight": "",
199
+ "tracking_number": "",
200
+ "updated": "2021-06-28 19:20:03",
201
+ "vat_number": "",
202
+ "vendor": {
203
+ "address": "1912 Harvest Lane\nNew York, NY 12210",
204
+ "category": "Car Repair",
205
+ "email": "",
206
+ "fax_number": "",
207
+ "name": "East Repair",
208
+ "phone_number": "",
209
+ "raw_name": "East Repair Inc.",
210
+ "vendor_logo": "https://cdn.veryfi.com/logos/tmp/560806841.png",
211
+ "vendor_reg_number": "",
212
+ "vendor_type": "Car Repair",
213
+ "web": ""
214
+ },
215
+ "vendor_account_number": "",
216
+ "vendor_bank_name": "",
217
+ "vendor_bank_number": "",
218
+ "vendor_bank_swift": "",
219
+ "vendor_iban": ""
220
+ }
221
+ ```
222
+
26
223
  ## Installation
27
224
 
28
225
  ```bash
@@ -42,7 +239,7 @@ If you don't have an account with Veryfi, please go ahead and register here: [ht
42
239
 
43
240
  ### Ruby API Client Library
44
241
 
45
- The **veryfi-ruby** gem can be used to communicate with Veryfi API. All available functionality is described [in docs](https://skdev.info/veryfi-ruby/)
242
+ The **veryfi-ruby** gem can be used to communicate with Veryfi API. All available functionality is described [in docs](https://veryfi.github.io/veryfi-ruby/)
46
243
 
47
244
  ## Need help?
48
245
 
@@ -66,3 +263,11 @@ bin/setup
66
263
  ## Develop
67
264
 
68
265
  `bin/ci` checks your specs and runs quality tools
266
+
267
+ ## Release
268
+
269
+ 1. Change version in `lib/veryfi/version.rb`
270
+ 2. Run bundle - this should update `Gemfile.lock`
271
+ 3. Commit changes and push to Github
272
+ 4. On Github go to `Actions` -> `Release` -> and click `Run workflow` to trigger release
273
+ 5. Workflow will publish gem to [Rubygems](https://rubygems.org/gems/veryfi) and also create a new tag in repository
data/bin/release CHANGED
@@ -7,3 +7,6 @@ gem build veryfi.gemspec
7
7
  gem_version=$(ruby -r rubygems -e "puts Gem::Specification::load('$(ls *.gemspec)').version")
8
8
 
9
9
  gem push veryfi-$gem_version.gem
10
+
11
+ git tag v$gem_version
12
+ git push --tags
Binary file
data/docs/_config.yml CHANGED
@@ -23,7 +23,7 @@ email: support@veryfi.com
23
23
  description: >- # this means to ignore newlines until "baseurl:"
24
24
  Veryfi is a Ruby gem for communicating with the Veryfi OCR API
25
25
  baseurl: "/veryfi-ruby" # the subpath of your site, e.g. /blog
26
- url: "https://skdev.info" # the base hostname & protocol for your site, e.g. http://example.com
26
+ url: "https://veryfi.github.io" # the base hostname & protocol for your site, e.g. http://example.com
27
27
  github_username: veryfi
28
28
  markdown: kramdown
29
29
  # Build settings
data/docs/index.markdown CHANGED
@@ -30,9 +30,9 @@ This submits a document for processing (3-5 seconds for a response)
30
30
  ```ruby
31
31
  params = {
32
32
  file_path: './test/receipt.jpg',
33
- auto_delete: 1,
34
- boost_mode: 1,
35
- async: 1,
33
+ auto_delete: true,
34
+ boost_mode: false,
35
+ async: false,
36
36
  external_id: '123456789',
37
37
  max_pages_to_process: 10,
38
38
  tags: ['tag1'],
@@ -52,9 +52,9 @@ puts response
52
52
  ```ruby
53
53
  params = {
54
54
  file_url: "https://raw.githubusercontent.com/veryfi/veryfi-python/master/tests/assets/receipt_public.jpg",
55
- auto_delete: 1,
56
- boost_mode: 1,
57
- async: 1,
55
+ auto_delete: true,
56
+ boost_mode: false,
57
+ async: false,
58
58
  external_id: "123456789",
59
59
  max_pages_to_process: 10,
60
60
  tags: ["tag1"],
@@ -30,17 +30,15 @@ module Veryfi
30
30
  end
31
31
 
32
32
  def all(params = {})
33
- response = request.get("/partner/documents/", params)
34
-
35
- response.is_a?(Hash) ? [response] : response
33
+ request.get("/partner/documents/", params)
36
34
  end
37
35
 
38
36
  def process(raw_params)
39
37
  params = setup_create_params(raw_params)
40
38
 
41
39
  file_content = File.read(params[:file_path])
42
- file_name = File.basename(params[:file_path], ".*")
43
40
  file_data = Base64.encode64(file_content).gsub("\n", "")
41
+ file_name = params[:file_name] || File.basename(params[:file_path], ".*")
44
42
 
45
43
  payload = params.reject { |k| k == :file_path }.merge(
46
44
  file_name: file_name,
@@ -11,7 +11,6 @@ module Veryfi
11
11
 
12
12
  def all(document_id, params = {})
13
13
  response = request.get("/partner/documents/#{document_id}/line-items/", params)
14
-
15
14
  response["line_items"]
16
15
  end
17
16
 
data/lib/veryfi/client.rb CHANGED
@@ -10,7 +10,7 @@ module Veryfi
10
10
  username:,
11
11
  api_key:,
12
12
  base_url: "https://api.veryfi.com/api/",
13
- api_version: "v7",
13
+ api_version: "v8",
14
14
  timeout: 20
15
15
  )
16
16
  @request = Veryfi::Request.new(client_id, client_secret, username, api_key, base_url, api_version, timeout)
@@ -90,7 +90,7 @@ module Veryfi
90
90
 
91
91
  def default_headers
92
92
  {
93
- "User-Agent": "Ruby Veryfi-Ruby/0.1.0",
93
+ "User-Agent": "Ruby Veryfi-Ruby/#{Veryfi::VERSION}",
94
94
  "Accept": "application/json",
95
95
  "Content-Type": "application/json",
96
96
  "Client-Id": client_id,
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Veryfi
4
- VERSION = "0.1.2"
4
+ VERSION = "1.0.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: veryfi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Veryfi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-09-01 00:00:00.000000000 Z
11
+ date: 2022-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base64