Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/veryfi/veryfi-ruby

Ruby gem for communicating with the Veryfi OCR API.
https://github.com/veryfi/veryfi-ruby

api invoice invoice-parser ocr ocr-library receipt receipt-reader ruby sdk sdk-ruby

Last synced: about 2 months ago
JSON representation

Ruby gem for communicating with the Veryfi OCR API.

Awesome Lists containing this project

README

        

# Veryfi SDK for Ruby


[![Version](https://img.shields.io/gem/v/veryfi)](https://rubygems.org/gems/veryfi)
[![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)
[![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)

**veryfi-ruby** is a Ruby gem for communicating with the [Veryfi OCR API](https://veryfi.com/api/)

[Documentation](https://veryfi.github.io/veryfi-ruby/)

## Table of Contents

- [Top](#veryfi-sdk-for-ruby)
- [Table of Contents](#table-of-contents)
- [Example](#example)
- [Installation](#installation)
- [Getting Started](#getting-started)
- [Obtaining Client ID and user keys](#obtaining-client-id-and-user-keys)
- [Ruby API Client Library](#ruby-api-client-library)
- [Need help?](#need-help)
- [For Developers](#for-developers)
- [Install](#install)
- [Quality tools](#quality-tools)
- [Develop](#develop)

## Example

Below is a sample script using **Veryfi** for OCR and extracting data from a document:

```ruby
require 'veryfi'

veryfi_client = Veryfi::Client.new(
client_id: 'your_client_id',
client_secret: 'your_client_secret',
username: 'your_username',
api_key: 'your_password'
)
```

This submits a document for processing (3-5 seconds for a response)

```ruby
params = {
file_path: './test/receipt.jpg',
auto_delete: true,
boost_mode: false,
async: false,
external_id: '123456789',
max_pages_to_process: 10,
tags: ['tag1'],
categories: [
'Advertising & Marketing',
'Automotive'
]
}

response = veryfi_client.document.process(params)

puts response
```

...or with a URL

```ruby
params = {
file_url: 'https://raw.githubusercontent.com/veryfi/veryfi-python/master/tests/assets/receipt_public.jpg',
auto_delete: true,
boost_mode: false,
async: false,
external_id: '123456789',
max_pages_to_process: 10,
tags: ['tag1'],
categories: [
'Advertising & Marketing',
'Automotive'
]
}

response = veryfi_client.document.process_url(params)

puts response
```

This will produce the following response:

```json
{
"abn_number": "",
"account_number": "",
"bill_to_address": "2 Court Square\nNew York, NY 12210",
"bill_to_name": "John Smith",
"bill_to_vat_number": "",
"card_number": "",
"cashback": 0,
"category": "Repairs & Maintenance",
"created": "2021-06-28 19:20:02",
"currency_code": "USD",
"date": "2019-02-11 00:00:00",
"delivery_date": "",
"discount": 0,
"document_reference_number": "",
"document_title": "",
"document_type": "invoice",
"due_date": "2019-02-26",
"duplicate_of": 37055375,
"external_id": "",
"id": 37187909,
"img_file_name": "receipt.png",
"img_thumbnail_url": "https://scdn.veryfi.com/receipts/thumbnail.png",
"img_url": "https://scdn.veryfi.com/receipts/receipt.png",
"insurance": "",
"invoice_number": "US-001",
"is_duplicate": 1,
"line_items": [
{
"date": "",
"description": "Front and rear brake cables",
"discount": 0,
"id": 68004313,
"order": 0,
"price": 100,
"quantity": 1,
"reference": "",
"section": "",
"sku": "",
"tax": 0,
"tax_rate": 0,
"total": 100,
"type": "product",
"unit_of_measure": ""
},
{
"date": "",
"description": "New set of pedal arms",
"discount": 0,
"id": 68004315,
"order": 1,
"price": 15,
"quantity": 2,
"reference": "",
"section": "",
"sku": "",
"tax": 0,
"tax_rate": 0,
"total": 30,
"type": "product",
"unit_of_measure": ""
},
{
"date": "",
"description": "Labor 3hrs",
"discount": 0,
"id": 68004316,
"order": 2,
"price": 5,
"quantity": 3,
"reference": "",
"section": "",
"sku": "",
"tax": 0,
"tax_rate": 0,
"total": 15,
"type": "service",
"unit_of_measure": ""
}
],
"notes": "",
"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",
"order_date": "",
"payment_display_name": "",
"payment_terms": "15 days",
"payment_type": "",
"phone_number": "",
"purchase_order_number": "2312/2019",
"rounding": 0,
"service_end_date": "",
"service_start_date": "",
"ship_date": "",
"ship_to_address": "3787 Pineview Drive\nCambridge, MA 12210",
"ship_to_name": "John Smith",
"shipping": 0,
"store_number": "",
"subtotal": 145,
"tax": 9.06,
"tax_lines": [
{
"base": 0,
"name": "Sales",
"order": 0,
"rate": 6.25,
"total": 9.06
}
],
"tip": 0,
"total": 154.06,
"total_weight": "",
"tracking_number": "",
"updated": "2021-06-28 19:20:03",
"vat_number": "",
"vendor": {
"address": "1912 Harvest Lane\nNew York, NY 12210",
"category": "Car Repair",
"email": "",
"fax_number": "",
"name": "East Repair",
"phone_number": "",
"raw_name": "East Repair Inc.",
"vendor_logo": "https://cdn.veryfi.com/logos/tmp/560806841.png",
"vendor_reg_number": "",
"vendor_type": "Car Repair",
"web": ""
},
"vendor_account_number": "",
"vendor_bank_name": "",
"vendor_bank_number": "",
"vendor_bank_swift": "",
"vendor_iban": ""
}
```

## Installation

```bash
gem install veryfi
```

Or add to your Gemfile:
```ruby
gem 'veryfi', '~> 0.1'
```

## Getting Started

### Obtaining Client ID and user keys

If you don't have an account with Veryfi, please go ahead and register here: [https://hub.veryfi.com/signup/api/](https://hub.veryfi.com/signup/api/)

### Ruby API Client Library

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/)

## Need help?

If you run into any issue or need help installing or using the library, please contact [email protected].

If you found a bug in this library or would like new features added, then open an issue or pull requests against this repo!

# For Developers

## Install

```bash
bin/setup
```

## Quality tools

* `bin/quality` based on [RuboCop](https://github.com/bbatsov/rubocop)
* `.rubocop.yml` describes active checks

## Develop

`bin/ci` checks your specs and runs quality tools

## Release

1. Change version in `lib/veryfi/version.rb`
2. Run `bundle` - this should update `Gemfile.lock`
3. Commit changes, push to a new Github branch, and merge
4. On Github go to `Actions` -> `Release` -> and click `Run workflow` to trigger a new release
5. Release workflow will publish gem to [Rubygems](https://rubygems.org/gems/veryfi)