mindee 2.1.1 → 2.2.1
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 +4 -4
- data/.gitignore +1 -0
- data/.rubocop.yml +3 -0
- data/CHANGELOG.md +11 -0
- data/bin/mindee.rb +1 -1
- data/docs/code_samples/expense_receipts_v5.txt +14 -0
- data/docs/ruby-receipt-ocr.md +30 -17
- data/lib/mindee/client.rb +3 -0
- data/lib/mindee/parsing/prediction/common_fields/locale.rb +1 -1
- data/lib/mindee/parsing/prediction/common_fields/tax.rb +4 -0
- data/lib/mindee/parsing/prediction/eu/license_plate/license_plate_v1.rb +4 -4
- data/lib/mindee/parsing/prediction/financial_document/financial_document_v1.rb +15 -23
- data/lib/mindee/parsing/prediction/{invoice/invoice_line_item.rb → financial_document/financial_document_v1_line_item.rb} +9 -9
- data/lib/mindee/parsing/prediction/fr/bank_account_details/bank_account_details_v1.rb +6 -6
- data/lib/mindee/parsing/prediction/fr/carte_vitale/carte_vitale_v1.rb +8 -8
- data/lib/mindee/parsing/prediction/fr/id_card/id_card_v1.rb +35 -34
- data/lib/mindee/parsing/prediction/invoice/invoice_v4.rb +14 -18
- data/lib/mindee/parsing/prediction/{financial_document/invoice_line_item.rb → invoice/invoice_v4_line_item.rb} +9 -9
- data/lib/mindee/parsing/prediction/proof_of_address/proof_of_address_v1.rb +36 -36
- data/lib/mindee/parsing/prediction/receipt/receipt_v5.rb +136 -0
- data/lib/mindee/parsing/prediction/receipt/receipt_v5_line_item.rb +37 -0
- data/lib/mindee/parsing/prediction/shipping_container/shipping_container_v1.rb +2 -2
- data/lib/mindee/parsing/prediction.rb +1 -0
- data/lib/mindee/version.rb +1 -1
- data/mindee.gemspec +5 -5
- metadata +17 -14
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 2e72f138a729f4c2296fb6fa1913ae54b55b7e25e49134d20bc91c7a6a90c7ae
         | 
| 4 | 
            +
              data.tar.gz: cf14c3229afc27d75017c2a184ef661fafdae38d22af046d5aed4651ad3aeb31
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 89dc112d3507a28af8fbc91f38715cc504772fbd4a47808b36ee138da1368966bad4a8629f4cc4de2a70a381635f599fe8f7105c11d432879bb949b17b1c3304
         | 
| 7 | 
            +
              data.tar.gz: 24cd2c56da98a224aa6193d2bb0ba3d2dc7d0b397efcc7e2cd720d4e9d80a93c26b5adcc085ed1dd28d36e2619eb30cd86804ecb69dc3fc9901712cc830236ba
         | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/.rubocop.yml
    CHANGED
    
    
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,5 +1,16 @@ | |
| 1 1 | 
             
            # Mindee Ruby API Library Changelog
         | 
| 2 2 |  | 
| 3 | 
            +
            ## v2.2.1 - 2023-05-22
         | 
| 4 | 
            +
            ### Fixes
         | 
| 5 | 
            +
            * :bug: added base attribute to tax field
         | 
| 6 | 
            +
             | 
| 7 | 
            +
             | 
| 8 | 
            +
            ## v2.2.0 - 2023-05-16
         | 
| 9 | 
            +
            ### Changes
         | 
| 10 | 
            +
            * :sparkles: add support for Receipts v5
         | 
| 11 | 
            +
            * :pushpin: more specific dependency pinning; update some dependencies
         | 
| 12 | 
            +
             | 
| 13 | 
            +
             | 
| 3 14 | 
             
            ## v2.1.1 - 2023-04-21
         | 
| 4 15 | 
             
            ### Changes
         | 
| 5 16 | 
             
            * :memo: minor docstring improvements
         | 
    
        data/bin/mindee.rb
    CHANGED
    
    
| @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            require 'mindee'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            # Init a new client, specifying an API key
         | 
| 4 | 
            +
            mindee_client = Mindee::Client.new(api_key: 'my-api-key')
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            # Load a file from disk and parse it
         | 
| 7 | 
            +
            result = mindee_client.doc_from_path('/path/to/the/file.ext')
         | 
| 8 | 
            +
              .parse(Mindee::Prediction::ReceiptV5)
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            # Print a full summary of the parsed data in RST format
         | 
| 11 | 
            +
            puts result
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            # Print the document-level parsed data
         | 
| 14 | 
            +
            # puts result.inference.prediction
         | 
    
        data/docs/ruby-receipt-ocr.md
    CHANGED
    
    | @@ -2,7 +2,7 @@ The Ruby  OCR SDK supports the [receipt API](https://developers.mindee.com/docs/ | |
| 2 2 |  | 
| 3 3 | 
             
            Using this sample below, we are going to illustrate how to extract the data that we want using the OCR SDK.
         | 
| 4 4 |  | 
| 5 | 
            -
            
         | 
| 6 6 |  | 
| 7 7 | 
             
            ## Quick Start
         | 
| 8 8 | 
             
            ```ruby
         | 
| @@ -11,27 +11,41 @@ require 'mindee' | |
| 11 11 | 
             
            # Init a new client, specifying an API key
         | 
| 12 12 | 
             
            mindee_client = Mindee::Client.new(api_key: 'my-api-key')
         | 
| 13 13 |  | 
| 14 | 
            -
            #  | 
| 15 | 
            -
            result = mindee_client.doc_from_path('/path/to/the/file.ext') | 
| 14 | 
            +
            # Load a file from disk and parse it
         | 
| 15 | 
            +
            result = mindee_client.doc_from_path('/path/to/the/file.ext')
         | 
| 16 | 
            +
                                  .parse(Mindee::Prediction::ReceiptV5)
         | 
| 16 17 |  | 
| 17 | 
            -
            # Print a summary of the  | 
| 18 | 
            +
            # Print a full summary of the parsed data in RST format
         | 
| 19 | 
            +
            # puts result
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            # Print the document-level parsed data
         | 
| 18 22 | 
             
            puts result.inference.prediction
         | 
| 19 23 | 
             
            ```
         | 
| 20 24 |  | 
| 21 25 | 
             
            Output:
         | 
| 22 26 | 
             
            ```
         | 
| 23 | 
            -
            :Locale: en- | 
| 24 | 
            -
            : | 
| 25 | 
            -
            :Category:  | 
| 26 | 
            -
            : | 
| 27 | 
            -
            : | 
| 28 | 
            -
            :Time:  | 
| 29 | 
            -
            : | 
| 30 | 
            -
            :Taxes:  | 
| 31 | 
            -
            :Total  | 
| 32 | 
            -
            : | 
| 33 | 
            -
            : | 
| 34 | 
            -
            : | 
| 27 | 
            +
            :Expense Locale: en-GB; en; GB; GBP;
         | 
| 28 | 
            +
            :Expense Category: food
         | 
| 29 | 
            +
            :Expense Sub Category: restaurant
         | 
| 30 | 
            +
            :Document Type: EXPENSE RECEIPT
         | 
| 31 | 
            +
            :Purchase Date: 2016-02-26
         | 
| 32 | 
            +
            :Purchase Time: 15:20
         | 
| 33 | 
            +
            :Total Amount: 10.20
         | 
| 34 | 
            +
            :Total Excluding Taxes: 8.50
         | 
| 35 | 
            +
            :Total Tax: 1.70
         | 
| 36 | 
            +
            :Tip and Gratuity:
         | 
| 37 | 
            +
            :Taxes: 1.70 20.00% VAT
         | 
| 38 | 
            +
            :Supplier Name: CLACHAN
         | 
| 39 | 
            +
            :Supplier Company Registrations: 232153895
         | 
| 40 | 
            +
                                             232153895
         | 
| 41 | 
            +
            :Supplier Address: 34 kingley street w1b 5qh
         | 
| 42 | 
            +
            :Supplier Phone Number: 02074940834
         | 
| 43 | 
            +
            :Line Items:
         | 
| 44 | 
            +
              +--------------------------------------+----------+--------------+------------+
         | 
| 45 | 
            +
              | Description                          | Quantity | Total Amount | Unit Price |
         | 
| 46 | 
            +
              +======================================+==========+==============+============+
         | 
| 47 | 
            +
              | Meantime Pale                        | 2.00     | 10.20        |            |
         | 
| 48 | 
            +
              +--------------------------------------+----------+--------------+------------+
         | 
| 35 49 | 
             
            ```
         | 
| 36 50 |  | 
| 37 51 | 
             
            ## Fields
         | 
| @@ -50,7 +64,6 @@ Depending on the field type specified, additional attributes can be extracted in | |
| 50 64 |  | 
| 51 65 | 
             
            Using the above sample, the following are the basic fields that can be extracted:
         | 
| 52 66 |  | 
| 53 | 
            -
            - [Orientation](#orientation)
         | 
| 54 67 | 
             
            - [Category](#category)
         | 
| 55 68 | 
             
            - [Date](#date)
         | 
| 56 69 | 
             
            - [Locale](#locale)
         | 
    
        data/lib/mindee/client.rb
    CHANGED
    
    | @@ -183,6 +183,9 @@ module Mindee | |
| 183 183 | 
             
                  @doc_configs[['mindee', Prediction::ReceiptV4.name]] = standard_document_config(
         | 
| 184 184 | 
             
                    Prediction::ReceiptV4, 'expense_receipts', '4'
         | 
| 185 185 | 
             
                  )
         | 
| 186 | 
            +
                  @doc_configs[['mindee', Prediction::ReceiptV5.name]] = standard_document_config(
         | 
| 187 | 
            +
                    Prediction::ReceiptV5, 'expense_receipts', '5'
         | 
| 188 | 
            +
                  )
         | 
| 186 189 | 
             
                  @doc_configs[['mindee', Prediction::PassportV1.name]] = standard_document_config(
         | 
| 187 190 | 
             
                    Prediction::PassportV1, 'passport', '1'
         | 
| 188 191 | 
             
                  )
         | 
| @@ -14,6 +14,9 @@ module Mindee | |
| 14 14 | 
             
                # Tax code
         | 
| 15 15 | 
             
                # @return [String]
         | 
| 16 16 | 
             
                attr_reader :code
         | 
| 17 | 
            +
                # Tax base
         | 
| 18 | 
            +
                # @return [Float]
         | 
| 19 | 
            +
                attr_reader :base
         | 
| 17 20 |  | 
| 18 21 | 
             
                # @param prediction [Hash]
         | 
| 19 22 | 
             
                # @param page_id [Integer, nil]
         | 
| @@ -21,6 +24,7 @@ module Mindee | |
| 21 24 | 
             
                  super
         | 
| 22 25 | 
             
                  @value = @value.round(3) unless @value.nil?
         | 
| 23 26 | 
             
                  @rate = prediction['rate'].to_f unless prediction['rate'].nil?
         | 
| 27 | 
            +
                  @base = prediction['base'].to_f unless prediction['base'].nil?
         | 
| 24 28 | 
             
                  @code = prediction['code'] unless prediction['code'] == 'None'
         | 
| 25 29 | 
             
                end
         | 
| 26 30 |  | 
| @@ -6,9 +6,9 @@ require_relative '../../base' | |
| 6 6 | 
             
            module Mindee
         | 
| 7 7 | 
             
              module Prediction
         | 
| 8 8 | 
             
                module EU
         | 
| 9 | 
            -
                  # License  | 
| 9 | 
            +
                  # License Plate v1 prediction results.
         | 
| 10 10 | 
             
                  class LicensePlateV1 < Prediction
         | 
| 11 | 
            -
                    #  | 
| 11 | 
            +
                    # List of all license plates found in the image.
         | 
| 12 12 | 
             
                    # @return [Array<Mindee::TextField>]
         | 
| 13 13 | 
             
                    attr_reader :license_plates
         | 
| 14 14 |  | 
| @@ -23,9 +23,9 @@ module Mindee | |
| 23 23 | 
             
                    end
         | 
| 24 24 |  | 
| 25 25 | 
             
                    def to_s
         | 
| 26 | 
            -
                      license_plates = @license_plates. | 
| 26 | 
            +
                      license_plates = @license_plates.join("\n #{' ' * 16}")
         | 
| 27 27 | 
             
                      out_str = String.new
         | 
| 28 | 
            -
                      out_str << "\n:License  | 
| 28 | 
            +
                      out_str << "\n:License Plates: #{license_plates}".rstrip
         | 
| 29 29 | 
             
                      out_str[1..].to_s
         | 
| 30 30 | 
             
                    end
         | 
| 31 31 | 
             
                  end
         | 
| @@ -2,7 +2,7 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            require_relative '../common_fields'
         | 
| 4 4 | 
             
            require_relative '../base'
         | 
| 5 | 
            -
            require_relative ' | 
| 5 | 
            +
            require_relative 'financial_document_v1_line_item'
         | 
| 6 6 |  | 
| 7 7 | 
             
            module Mindee
         | 
| 8 8 | 
             
              module Prediction
         | 
| @@ -60,7 +60,7 @@ module Mindee | |
| 60 60 | 
             
                  # @return [Array<Mindee::CompanyRegistration>]
         | 
| 61 61 | 
             
                  attr_reader :supplier_company_registrations
         | 
| 62 62 | 
             
                  # Line items details.
         | 
| 63 | 
            -
                  # @return [Array<Mindee:: | 
| 63 | 
            +
                  # @return [Array<Mindee::FinancialDocumentV1LineItem>]
         | 
| 64 64 | 
             
                  attr_reader :line_items
         | 
| 65 65 | 
             
                  # Time as seen on the receipt in HH:MM format.
         | 
| 66 66 | 
             
                  # @return [Mindee::TextField]
         | 
| @@ -83,7 +83,6 @@ module Mindee | |
| 83 83 | 
             
                  # @param page_id [Integer, nil]
         | 
| 84 84 | 
             
                  def initialize(prediction, page_id) # rubocop:todo Metrics/AbcSize
         | 
| 85 85 | 
             
                    super
         | 
| 86 | 
            -
             | 
| 87 86 | 
             
                    @time = TextField.new(prediction['time'], page_id)
         | 
| 88 87 | 
             
                    @category = TextField.new(prediction['category'], page_id)
         | 
| 89 88 | 
             
                    @subcategory = TextField.new(prediction['subcategory'], page_id)
         | 
| @@ -100,7 +99,6 @@ module Mindee | |
| 100 99 | 
             
                    @invoice_number = TextField.new(prediction['invoice_number'], page_id)
         | 
| 101 100 | 
             
                    @supplier_name = TextField.new(prediction['supplier_name'], page_id)
         | 
| 102 101 | 
             
                    @supplier_address = TextField.new(prediction['supplier_address'], page_id)
         | 
| 103 | 
            -
             | 
| 104 102 | 
             
                    @reference_numbers = []
         | 
| 105 103 | 
             
                    prediction['reference_numbers'].each do |item|
         | 
| 106 104 | 
             
                      @reference_numbers.push(TextField.new(item, page_id))
         | 
| @@ -121,14 +119,12 @@ module Mindee | |
| 121 119 | 
             
                    prediction['supplier_company_registrations'].each do |item|
         | 
| 122 120 | 
             
                      @supplier_company_registrations.push(CompanyRegistration.new(item, page_id))
         | 
| 123 121 | 
             
                    end
         | 
| 124 | 
            -
             | 
| 125 122 | 
             
                    @total_tax = AmountField.new(
         | 
| 126 123 | 
             
                      { value: nil, confidence: 0.0 }, page_id
         | 
| 127 124 | 
             
                    )
         | 
| 128 | 
            -
             | 
| 129 125 | 
             
                    @line_items = []
         | 
| 130 126 | 
             
                    prediction['line_items'].each do |item|
         | 
| 131 | 
            -
                      @line_items.push( | 
| 127 | 
            +
                      @line_items.push(FinancialDocumentV1LineItem.new(item, page_id))
         | 
| 132 128 | 
             
                    end
         | 
| 133 129 | 
             
                    reconstruct(page_id)
         | 
| 134 130 | 
             
                  end
         | 
| @@ -153,39 +149,35 @@ module Mindee | |
| 153 149 | 
             
                    out_str << "\n:Supplier address: #{@supplier_address}".rstrip
         | 
| 154 150 | 
             
                    out_str << "\n:Supplier company registrations: #{supplier_company_registrations}".rstrip
         | 
| 155 151 | 
             
                    out_str << "\n:Supplier payment details: #{supplier_payment_details}".rstrip
         | 
| 156 | 
            -
             | 
| 157 152 | 
             
                    out_str << "\n:Customer name: #{@customer_name}".rstrip
         | 
| 158 153 | 
             
                    out_str << "\n:Customer address: #{@customer_address}".rstrip
         | 
| 159 154 | 
             
                    out_str << "\n:Customer company registrations: #{customer_company_registrations}".rstrip
         | 
| 160 | 
            -
             | 
| 161 155 | 
             
                    out_str << "\n:Tip: #{@tip}".rstrip
         | 
| 162 | 
            -
             | 
| 163 156 | 
             
                    out_str << "\n:Taxes: #{taxes}".rstrip
         | 
| 164 157 | 
             
                    out_str << "\n:Total taxes: #{@total_tax}".rstrip
         | 
| 165 158 | 
             
                    out_str << "\n:Total net: #{@total_net}".rstrip
         | 
| 166 159 | 
             
                    out_str << "\n:Total amount: #{@total_amount}".rstrip
         | 
| 167 | 
            -
             | 
| 160 | 
            +
                    out_str << "\n:Line Items:"
         | 
| 168 161 | 
             
                    out_str << line_items_to_s
         | 
| 169 | 
            -
             | 
| 170 162 | 
             
                    out_str[1..].to_s
         | 
| 171 163 | 
             
                  end
         | 
| 172 164 |  | 
| 173 165 | 
             
                  private
         | 
| 174 166 |  | 
| 167 | 
            +
                  def line_item_separator(char)
         | 
| 168 | 
            +
                    "  +#{char * 22}+#{char * 9}+#{char * 9}+#{char * 10}+#{char * 18}+#{char * 38}+"
         | 
| 169 | 
            +
                  end
         | 
| 170 | 
            +
             | 
| 175 171 | 
             
                  def line_items_to_s
         | 
| 176 | 
            -
                     | 
| 177 | 
            -
                    line_items = @line_items.map(&:to_s).join("\n")
         | 
| 172 | 
            +
                    return '' if @line_items.empty?
         | 
| 178 173 |  | 
| 174 | 
            +
                    line_items = @line_items.map(&:to_s).join("\n#{line_item_separator('-')}\n  ")
         | 
| 179 175 | 
             
                    out_str = String.new
         | 
| 180 | 
            -
                    out_str << "\n | 
| 181 | 
            -
             | 
| 182 | 
            -
                     | 
| 183 | 
            -
             | 
| 184 | 
            -
                    out_str << "\n#{line_item_separator}"
         | 
| 185 | 
            -
                    out_str << "\nCode                   QTY      Price     Amount     Tax (Rate)         Description"
         | 
| 186 | 
            -
                    out_str << "\n#{line_item_separator}"
         | 
| 187 | 
            -
                    out_str << "\n#{line_items}"
         | 
| 188 | 
            -
                    out_str << "\n#{line_item_separator}"
         | 
| 176 | 
            +
                    out_str << "\n#{line_item_separator('-')}"
         | 
| 177 | 
            +
                    out_str << "\n  | Code#{' ' * 17}| QTY     | Price   | Amount   | Tax (Rate)       | Description#{' ' * 26}|"
         | 
| 178 | 
            +
                    out_str << "\n#{line_item_separator('=')}"
         | 
| 179 | 
            +
                    out_str << "\n  #{line_items}"
         | 
| 180 | 
            +
                    out_str << "\n#{line_item_separator('-')}"
         | 
| 189 181 | 
             
                  end
         | 
| 190 182 |  | 
| 191 183 | 
             
                  def reconstruct(page_id)
         | 
| @@ -4,7 +4,7 @@ require_relative '../common_fields/base' | |
| 4 4 |  | 
| 5 5 | 
             
            module Mindee
         | 
| 6 6 | 
             
              # Line items for invoices
         | 
| 7 | 
            -
              class  | 
| 7 | 
            +
              class FinancialDocumentV1LineItem
         | 
| 8 8 | 
             
                # @return [String] The product code referring to the item.
         | 
| 9 9 | 
             
                attr_reader :product_code
         | 
| 10 10 | 
             
                # @return [String]
         | 
| @@ -39,20 +39,20 @@ module Mindee | |
| 39 39 | 
             
                  @page_id = page_id
         | 
| 40 40 | 
             
                end
         | 
| 41 41 |  | 
| 42 | 
            +
                # @return String
         | 
| 42 43 | 
             
                def to_s
         | 
| 43 44 | 
             
                  tax = Field.float_to_string(@tax_amount)
         | 
| 44 45 | 
             
                  tax << " (#{Field.float_to_string(@tax_rate)}%)" unless @tax_rate.nil?
         | 
| 45 | 
            -
             | 
| 46 46 | 
             
                  description = @description.nil? ? '' : @description
         | 
| 47 47 | 
             
                  description = "#{description[0..32]}..." if description.size > 35
         | 
| 48 | 
            -
             | 
| 49 48 | 
             
                  out_str = String.new
         | 
| 50 | 
            -
                  out_str << format('%-  | 
| 51 | 
            -
                  out_str << " #{format('%-  | 
| 52 | 
            -
                  out_str << " #{format('%-  | 
| 53 | 
            -
                  out_str << " #{format('%-  | 
| 54 | 
            -
                  out_str << " #{format('%-  | 
| 55 | 
            -
                  out_str << " #{description}"
         | 
| 49 | 
            +
                  out_str << format('| %- 20s', @product_code)
         | 
| 50 | 
            +
                  out_str << " #{format('| %- 7s', Field.float_to_string(@quantity))}"
         | 
| 51 | 
            +
                  out_str << " #{format('| %- 7s', Field.float_to_string(@unit_price))}"
         | 
| 52 | 
            +
                  out_str << " #{format('| %- 8s', Field.float_to_string(@total_amount))}"
         | 
| 53 | 
            +
                  out_str << " #{format('| %- 16s', tax)}"
         | 
| 54 | 
            +
                  out_str << " #{format('| %- 37s', description)}"
         | 
| 55 | 
            +
                  out_str << '|'
         | 
| 56 56 | 
             
                end
         | 
| 57 57 | 
             
              end
         | 
| 58 58 | 
             
            end
         | 
| @@ -6,15 +6,15 @@ require_relative '../../base' | |
| 6 6 | 
             
            module Mindee
         | 
| 7 7 | 
             
              module Prediction
         | 
| 8 8 | 
             
                module FR
         | 
| 9 | 
            -
                  #  | 
| 9 | 
            +
                  # Bank Account Details v1 prediction results.
         | 
| 10 10 | 
             
                  class BankAccountDetailsV1 < Prediction
         | 
| 11 | 
            -
                    # The  | 
| 11 | 
            +
                    # The International Bank Account Number (IBAN).
         | 
| 12 12 | 
             
                    # @return [Mindee::TextField]
         | 
| 13 13 | 
             
                    attr_reader :iban
         | 
| 14 | 
            -
                    # The account holder | 
| 14 | 
            +
                    # The name of the account holder as seen on the document.
         | 
| 15 15 | 
             
                    # @return [Mindee::TextField]
         | 
| 16 16 | 
             
                    attr_reader :account_holder_name
         | 
| 17 | 
            -
                    # The bank's SWIFT  | 
| 17 | 
            +
                    # The bank's SWIFT Business Identifier Code (BIC).
         | 
| 18 18 | 
             
                    # @return [Mindee::TextField]
         | 
| 19 19 | 
             
                    attr_reader :swift
         | 
| 20 20 |  | 
| @@ -30,8 +30,8 @@ module Mindee | |
| 30 30 | 
             
                    def to_s
         | 
| 31 31 | 
             
                      out_str = String.new
         | 
| 32 32 | 
             
                      out_str << "\n:IBAN: #{@iban}".rstrip
         | 
| 33 | 
            -
                      out_str << "\n:Account  | 
| 34 | 
            -
                      out_str << "\n:SWIFT: #{@swift}".rstrip
         | 
| 33 | 
            +
                      out_str << "\n:Account Holder's Name: #{@account_holder_name}".rstrip
         | 
| 34 | 
            +
                      out_str << "\n:SWIFT Code: #{@swift}".rstrip
         | 
| 35 35 | 
             
                      out_str[1..].to_s
         | 
| 36 36 | 
             
                    end
         | 
| 37 37 | 
             
                  end
         | 
| @@ -6,18 +6,18 @@ require_relative '../../base' | |
| 6 6 | 
             
            module Mindee
         | 
| 7 7 | 
             
              module Prediction
         | 
| 8 8 | 
             
                module FR
         | 
| 9 | 
            -
                  #  | 
| 9 | 
            +
                  # Carte Vitale v1 prediction results.
         | 
| 10 10 | 
             
                  class CarteVitaleV1 < Prediction
         | 
| 11 | 
            -
                    #  | 
| 11 | 
            +
                    # The given name(s) of the card holder.
         | 
| 12 12 | 
             
                    # @return [Array<Mindee::TextField>]
         | 
| 13 13 | 
             
                    attr_reader :given_names
         | 
| 14 | 
            -
                    # The surname  | 
| 14 | 
            +
                    # The surname of the card holder.
         | 
| 15 15 | 
             
                    # @return [Mindee::TextField]
         | 
| 16 16 | 
             
                    attr_reader :surname
         | 
| 17 | 
            -
                    # The  | 
| 17 | 
            +
                    # The Social Security Number (Numéro de Sécurité Sociale) of the card holder
         | 
| 18 18 | 
             
                    # @return [Mindee::TextField]
         | 
| 19 19 | 
             
                    attr_reader :social_security
         | 
| 20 | 
            -
                    # The  | 
| 20 | 
            +
                    # The date the card was issued.
         | 
| 21 21 | 
             
                    # @return [Mindee::DateField]
         | 
| 22 22 | 
             
                    attr_reader :issuance_date
         | 
| 23 23 |  | 
| @@ -35,12 +35,12 @@ module Mindee | |
| 35 35 | 
             
                    end
         | 
| 36 36 |  | 
| 37 37 | 
             
                    def to_s
         | 
| 38 | 
            -
                      given_names = @given_names. | 
| 38 | 
            +
                      given_names = @given_names.join("\n #{' ' * 15}")
         | 
| 39 39 | 
             
                      out_str = String.new
         | 
| 40 | 
            -
                      out_str << "\n:Given  | 
| 40 | 
            +
                      out_str << "\n:Given Name(s): #{given_names}".rstrip
         | 
| 41 41 | 
             
                      out_str << "\n:Surname: #{@surname}".rstrip
         | 
| 42 42 | 
             
                      out_str << "\n:Social Security Number: #{@social_security}".rstrip
         | 
| 43 | 
            -
                      out_str << "\n:Issuance  | 
| 43 | 
            +
                      out_str << "\n:Issuance Date: #{@issuance_date}".rstrip
         | 
| 44 44 | 
             
                      out_str[1..].to_s
         | 
| 45 45 | 
             
                    end
         | 
| 46 46 | 
             
                  end
         | 
| @@ -6,39 +6,39 @@ require_relative '../../base' | |
| 6 6 | 
             
            module Mindee
         | 
| 7 7 | 
             
              module Prediction
         | 
| 8 8 | 
             
                module FR
         | 
| 9 | 
            -
                  #  | 
| 9 | 
            +
                  # Carte Nationale d'Identité v1 prediction results.
         | 
| 10 10 | 
             
                  class IdCardV1 < Prediction
         | 
| 11 | 
            -
                    # The  | 
| 12 | 
            -
                    # @return [Array<Mindee::TextField>]
         | 
| 13 | 
            -
                    attr_reader :authority
         | 
| 14 | 
            -
                    # Indicates if it is the recto side, the verso side or both.
         | 
| 11 | 
            +
                    # The side of the document which is visible.
         | 
| 15 12 | 
             
                    # @return [Mindee::TextField]
         | 
| 16 13 | 
             
                    attr_reader :document_side
         | 
| 17 | 
            -
                    # The card number.
         | 
| 14 | 
            +
                    # The identification card number.
         | 
| 18 15 | 
             
                    # @return [Mindee::TextField]
         | 
| 19 16 | 
             
                    attr_reader :id_number
         | 
| 20 | 
            -
                    # The  | 
| 21 | 
            -
                    # @return [Mindee:: | 
| 22 | 
            -
                    attr_reader : | 
| 23 | 
            -
                    # The surname  | 
| 17 | 
            +
                    # The given name(s) of the card holder.
         | 
| 18 | 
            +
                    # @return [Array<Mindee::TextField>]
         | 
| 19 | 
            +
                    attr_reader :given_names
         | 
| 20 | 
            +
                    # The surname of the card holder.
         | 
| 24 21 | 
             
                    # @return [Mindee::TextField]
         | 
| 25 22 | 
             
                    attr_reader :surname
         | 
| 26 | 
            -
                    #  | 
| 27 | 
            -
                    # @return [Mindee::TextField]
         | 
| 28 | 
            -
                    attr_reader :given_names
         | 
| 29 | 
            -
                    # The date of birth of the cardholder.
         | 
| 23 | 
            +
                    # The date of birth of the card holder.
         | 
| 30 24 | 
             
                    # @return [Mindee::DateField]
         | 
| 31 25 | 
             
                    attr_reader :birth_date
         | 
| 32 | 
            -
                    # The place of birth of the  | 
| 26 | 
            +
                    # The place of birth of the card holder.
         | 
| 33 27 | 
             
                    # @return [Mindee::TextField]
         | 
| 34 28 | 
             
                    attr_reader :birth_place
         | 
| 35 | 
            -
                    # The  | 
| 29 | 
            +
                    # The expiry date of the identification card.
         | 
| 30 | 
            +
                    # @return [Mindee::DateField]
         | 
| 31 | 
            +
                    attr_reader :expiry_date
         | 
| 32 | 
            +
                    # The name of the issuing authority.
         | 
| 33 | 
            +
                    # @return [Mindee::TextField]
         | 
| 34 | 
            +
                    attr_reader :authority
         | 
| 35 | 
            +
                    # The gender of the card holder.
         | 
| 36 36 | 
             
                    # @return [Mindee::TextField]
         | 
| 37 37 | 
             
                    attr_reader :gender
         | 
| 38 | 
            -
                    #  | 
| 38 | 
            +
                    # Machine Readable Zone, first line
         | 
| 39 39 | 
             
                    # @return [Mindee::TextField]
         | 
| 40 40 | 
             
                    attr_reader :mrz1
         | 
| 41 | 
            -
                    #  | 
| 41 | 
            +
                    # Machine Readable Zone, second line
         | 
| 42 42 | 
             
                    # @return [Mindee::TextField]
         | 
| 43 43 | 
             
                    attr_reader :mrz2
         | 
| 44 44 |  | 
| @@ -49,33 +49,34 @@ module Mindee | |
| 49 49 | 
             
                      @document_side = TextField.new(prediction['document_side'], page_id) if page_id
         | 
| 50 50 | 
             
                      @authority = TextField.new(prediction['authority'], page_id)
         | 
| 51 51 | 
             
                      @id_number = TextField.new(prediction['id_number'], page_id)
         | 
| 52 | 
            +
                      @given_names = []
         | 
| 53 | 
            +
                      prediction['given_names'].each do |item|
         | 
| 54 | 
            +
                        @given_names.push(TextField.new(item, page_id))
         | 
| 55 | 
            +
                      end
         | 
| 56 | 
            +
                      @surname = TextField.new(prediction['surname'], page_id)
         | 
| 52 57 | 
             
                      @birth_date = DateField.new(prediction['birth_date'], page_id)
         | 
| 53 | 
            -
                      @expiry_date = DateField.new(prediction['expiry_date'], page_id)
         | 
| 54 58 | 
             
                      @birth_place = TextField.new(prediction['birth_place'], page_id)
         | 
| 59 | 
            +
                      @expiry_date = DateField.new(prediction['expiry_date'], page_id)
         | 
| 60 | 
            +
                      @authority = TextField.new(prediction['authority'], page_id)
         | 
| 55 61 | 
             
                      @gender = TextField.new(prediction['gender'], page_id)
         | 
| 56 | 
            -
                      @surname = TextField.new(prediction['surname'], page_id)
         | 
| 57 62 | 
             
                      @mrz1 = TextField.new(prediction['mrz1'], page_id)
         | 
| 58 63 | 
             
                      @mrz2 = TextField.new(prediction['mrz2'], page_id)
         | 
| 59 | 
            -
                      @given_names = []
         | 
| 60 | 
            -
                      prediction['given_names'].each do |item|
         | 
| 61 | 
            -
                        @given_names.push(TextField.new(item, page_id))
         | 
| 62 | 
            -
                      end
         | 
| 63 64 | 
             
                    end
         | 
| 64 65 |  | 
| 65 66 | 
             
                    def to_s
         | 
| 66 | 
            -
                      given_names = @given_names. | 
| 67 | 
            +
                      given_names = @given_names.join("\n #{' ' * 15}")
         | 
| 67 68 | 
             
                      out_str = String.new
         | 
| 68 | 
            -
                      out_str << "\n:Document  | 
| 69 | 
            -
                      out_str << "\n: | 
| 70 | 
            -
                      out_str << "\n:Given  | 
| 69 | 
            +
                      out_str << "\n:Document Side: #{@document_side}".rstrip if @document_side
         | 
| 70 | 
            +
                      out_str << "\n:Identity Number: #{@id_number}".rstrip
         | 
| 71 | 
            +
                      out_str << "\n:Given Name(s): #{given_names}".rstrip
         | 
| 71 72 | 
             
                      out_str << "\n:Surname: #{@surname}".rstrip
         | 
| 73 | 
            +
                      out_str << "\n:Date of Birth: #{@birth_date}".rstrip
         | 
| 74 | 
            +
                      out_str << "\n:Place of Birth: #{@birth_place}".rstrip
         | 
| 75 | 
            +
                      out_str << "\n:Expiry Date: #{@expiry_date}".rstrip
         | 
| 76 | 
            +
                      out_str << "\n:Issuing Authority: #{@authority}".rstrip
         | 
| 72 77 | 
             
                      out_str << "\n:Gender: #{@gender}".rstrip
         | 
| 73 | 
            -
                      out_str << "\n: | 
| 74 | 
            -
                      out_str << "\n: | 
| 75 | 
            -
                      out_str << "\n:Birth place: #{@birth_place}".rstrip
         | 
| 76 | 
            -
                      out_str << "\n:Expiry date: #{@expiry_date}".rstrip
         | 
| 77 | 
            -
                      out_str << "\n:MRZ 1: #{@mrz1}".rstrip
         | 
| 78 | 
            -
                      out_str << "\n:MRZ 2: #{@mrz2}".rstrip
         | 
| 78 | 
            +
                      out_str << "\n:MRZ Line 1: #{@mrz1}".rstrip
         | 
| 79 | 
            +
                      out_str << "\n:MRZ Line 2: #{@mrz2}".rstrip
         | 
| 79 80 | 
             
                      out_str[1..].to_s
         | 
| 80 81 | 
             
                    end
         | 
| 81 82 | 
             
                  end
         | 
| @@ -1,8 +1,8 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 3 | 
             
            require_relative '../common_fields'
         | 
| 4 | 
            -
            require_relative 'invoice_line_item'
         | 
| 5 4 | 
             
            require_relative '../base'
         | 
| 5 | 
            +
            require_relative 'invoice_v4_line_item'
         | 
| 6 6 |  | 
| 7 7 | 
             
            module Mindee
         | 
| 8 8 | 
             
              module Prediction
         | 
| @@ -60,7 +60,7 @@ module Mindee | |
| 60 60 | 
             
                  # @return [Array<Mindee::CompanyRegistration>]
         | 
| 61 61 | 
             
                  attr_reader :supplier_company_registrations
         | 
| 62 62 | 
             
                  # Line items details.
         | 
| 63 | 
            -
                  # @return [Array<Mindee:: | 
| 63 | 
            +
                  # @return [Array<Mindee::InvoiceV4LineItem>]
         | 
| 64 64 | 
             
                  attr_reader :line_items
         | 
| 65 65 |  | 
| 66 66 | 
             
                  # @param prediction [Hash]
         | 
| @@ -78,7 +78,6 @@ module Mindee | |
| 78 78 | 
             
                    @invoice_number = TextField.new(prediction['invoice_number'], page_id)
         | 
| 79 79 | 
             
                    @supplier_name = TextField.new(prediction['supplier_name'], page_id)
         | 
| 80 80 | 
             
                    @supplier_address = TextField.new(prediction['supplier_address'], page_id)
         | 
| 81 | 
            -
             | 
| 82 81 | 
             
                    @reference_numbers = []
         | 
| 83 82 | 
             
                    prediction['reference_numbers'].each do |item|
         | 
| 84 83 | 
             
                      @reference_numbers.push(TextField.new(item, page_id))
         | 
| @@ -99,14 +98,12 @@ module Mindee | |
| 99 98 | 
             
                    prediction['supplier_company_registrations'].each do |item|
         | 
| 100 99 | 
             
                      @supplier_company_registrations.push(CompanyRegistration.new(item, page_id))
         | 
| 101 100 | 
             
                    end
         | 
| 102 | 
            -
             | 
| 103 101 | 
             
                    @total_tax = AmountField.new(
         | 
| 104 102 | 
             
                      { value: nil, confidence: 0.0 }, page_id
         | 
| 105 103 | 
             
                    )
         | 
| 106 | 
            -
             | 
| 107 104 | 
             
                    @line_items = []
         | 
| 108 105 | 
             
                    prediction['line_items'].each do |item|
         | 
| 109 | 
            -
                      @line_items.push( | 
| 106 | 
            +
                      @line_items.push(InvoiceV4LineItem.new(item, page_id))
         | 
| 110 107 | 
             
                    end
         | 
| 111 108 | 
             
                    reconstruct(page_id)
         | 
| 112 109 | 
             
                  end
         | 
| @@ -124,39 +121,38 @@ module Mindee | |
| 124 121 | 
             
                    out_str << "\n:Reference numbers: #{reference_numbers}".rstrip
         | 
| 125 122 | 
             
                    out_str << "\n:Invoice date: #{@date}".rstrip
         | 
| 126 123 | 
             
                    out_str << "\n:Invoice due date: #{@due_date}".rstrip
         | 
| 127 | 
            -
             | 
| 128 124 | 
             
                    out_str << "\n:Supplier name: #{@supplier_name}".rstrip
         | 
| 129 125 | 
             
                    out_str << "\n:Supplier address: #{@supplier_address}".rstrip
         | 
| 130 126 | 
             
                    out_str << "\n:Supplier company registrations: #{supplier_company_registrations}".rstrip
         | 
| 131 127 | 
             
                    out_str << "\n:Supplier payment details: #{supplier_payment_details}".rstrip
         | 
| 132 | 
            -
             | 
| 133 128 | 
             
                    out_str << "\n:Customer name: #{@customer_name}".rstrip
         | 
| 134 129 | 
             
                    out_str << "\n:Customer address: #{@customer_address}".rstrip
         | 
| 135 130 | 
             
                    out_str << "\n:Customer company registrations: #{customer_company_registrations}".rstrip
         | 
| 136 | 
            -
             | 
| 137 131 | 
             
                    out_str << "\n:Taxes: #{taxes}".rstrip
         | 
| 138 132 | 
             
                    out_str << "\n:Total net: #{@total_net}".rstrip
         | 
| 139 133 | 
             
                    out_str << "\n:Total taxes: #{@total_tax}".rstrip
         | 
| 140 134 | 
             
                    out_str << "\n:Total amount: #{@total_amount}".rstrip
         | 
| 135 | 
            +
                    out_str << "\n:Line Items:"
         | 
| 141 136 | 
             
                    out_str << line_items_to_s
         | 
| 142 | 
            -
             | 
| 143 137 | 
             
                    out_str[1..].to_s
         | 
| 144 138 | 
             
                  end
         | 
| 145 139 |  | 
| 146 140 | 
             
                  private
         | 
| 147 141 |  | 
| 142 | 
            +
                  def line_item_separator(char)
         | 
| 143 | 
            +
                    "  +#{char * 22}+#{char * 9}+#{char * 9}+#{char * 10}+#{char * 18}+#{char * 38}+"
         | 
| 144 | 
            +
                  end
         | 
| 145 | 
            +
             | 
| 148 146 | 
             
                  def line_items_to_s
         | 
| 149 147 | 
             
                    return '' if @line_items.empty?
         | 
| 150 148 |  | 
| 151 | 
            -
                     | 
| 152 | 
            -
                    line_items = @line_items.map(&:to_s).join("\n")
         | 
| 149 | 
            +
                    line_items = @line_items.map(&:to_s).join("\n#{line_item_separator('-')}\n  ")
         | 
| 153 150 | 
             
                    out_str = String.new
         | 
| 154 | 
            -
                    out_str << "\n | 
| 155 | 
            -
                    out_str << "\n#{ | 
| 156 | 
            -
                    out_str << "\ | 
| 157 | 
            -
                    out_str << "\n#{ | 
| 158 | 
            -
                    out_str << "\n#{ | 
| 159 | 
            -
                    out_str << "\n#{line_item_separator}" unless line_items.empty?
         | 
| 151 | 
            +
                    out_str << "\n#{line_item_separator('-')}"
         | 
| 152 | 
            +
                    out_str << "\n  | Code#{' ' * 17}| QTY     | Price   | Amount   | Tax (Rate)       | Description #{' ' * 25}|"
         | 
| 153 | 
            +
                    out_str << "\n#{line_item_separator('=')}"
         | 
| 154 | 
            +
                    out_str << "\n  #{line_items}"
         | 
| 155 | 
            +
                    out_str << "\n#{line_item_separator('-')}"
         | 
| 160 156 | 
             
                  end
         | 
| 161 157 |  | 
| 162 158 | 
             
                  def reconstruct(page_id)
         | 
| @@ -4,7 +4,7 @@ require_relative '../common_fields/base' | |
| 4 4 |  | 
| 5 5 | 
             
            module Mindee
         | 
| 6 6 | 
             
              # Line items for invoices
         | 
| 7 | 
            -
              class  | 
| 7 | 
            +
              class InvoiceV4LineItem
         | 
| 8 8 | 
             
                # @return [String] The product code referring to the item.
         | 
| 9 9 | 
             
                attr_reader :product_code
         | 
| 10 10 | 
             
                # @return [String]
         | 
| @@ -39,20 +39,20 @@ module Mindee | |
| 39 39 | 
             
                  @page_id = page_id
         | 
| 40 40 | 
             
                end
         | 
| 41 41 |  | 
| 42 | 
            +
                # @return String
         | 
| 42 43 | 
             
                def to_s
         | 
| 43 44 | 
             
                  tax = Field.float_to_string(@tax_amount)
         | 
| 44 45 | 
             
                  tax << " (#{Field.float_to_string(@tax_rate)}%)" unless @tax_rate.nil?
         | 
| 45 | 
            -
             | 
| 46 46 | 
             
                  description = @description.nil? ? '' : @description
         | 
| 47 47 | 
             
                  description = "#{description[0..32]}..." if description.size > 35
         | 
| 48 | 
            -
             | 
| 49 48 | 
             
                  out_str = String.new
         | 
| 50 | 
            -
                  out_str << format('%-  | 
| 51 | 
            -
                  out_str << " #{format('%-  | 
| 52 | 
            -
                  out_str << " #{format('%-  | 
| 53 | 
            -
                  out_str << " #{format('%-  | 
| 54 | 
            -
                  out_str << " #{format('%-  | 
| 55 | 
            -
                  out_str << " #{description}"
         | 
| 49 | 
            +
                  out_str << format('| %- 20s', @product_code)
         | 
| 50 | 
            +
                  out_str << " #{format('| %- 7s', Field.float_to_string(@quantity))}"
         | 
| 51 | 
            +
                  out_str << " #{format('| %- 7s', Field.float_to_string(@unit_price))}"
         | 
| 52 | 
            +
                  out_str << " #{format('| %- 8s', Field.float_to_string(@total_amount))}"
         | 
| 53 | 
            +
                  out_str << " #{format('| %- 16s', tax)}"
         | 
| 54 | 
            +
                  out_str << " #{format('| %- 37s', description)}"
         | 
| 55 | 
            +
                  out_str << '|'
         | 
| 56 56 | 
             
                end
         | 
| 57 57 | 
             
              end
         | 
| 58 58 | 
             
            end
         | 
| @@ -5,74 +5,74 @@ require_relative '../base' | |
| 5 5 |  | 
| 6 6 | 
             
            module Mindee
         | 
| 7 7 | 
             
              module Prediction
         | 
| 8 | 
            -
                #  | 
| 8 | 
            +
                # Proof of Address v1 prediction results.
         | 
| 9 9 | 
             
                class ProofOfAddressV1 < Prediction
         | 
| 10 | 
            -
                  #  | 
| 10 | 
            +
                  # The locale detected on the document.
         | 
| 11 11 | 
             
                  # @return [Mindee::Locale]
         | 
| 12 12 | 
             
                  attr_reader :locale
         | 
| 13 | 
            -
                  #  | 
| 14 | 
            -
                  # @return [Mindee::DateField]
         | 
| 15 | 
            -
                  attr_reader :date
         | 
| 16 | 
            -
                  # All extracted ISO date yyyy-mm-dd. Works both for European and US dates.
         | 
| 17 | 
            -
                  # @return [Array<Mindee::DateField>]
         | 
| 18 | 
            -
                  attr_reader :dates
         | 
| 19 | 
            -
                  # Address of the document's issuer.
         | 
| 13 | 
            +
                  # The name of the person or company issuing the document.
         | 
| 20 14 | 
             
                  # @return [Mindee::TextField]
         | 
| 21 | 
            -
                  attr_reader : | 
| 22 | 
            -
                  #  | 
| 23 | 
            -
                  # @return [Array<Mindee:: | 
| 15 | 
            +
                  attr_reader :issuer_name
         | 
| 16 | 
            +
                  # List of company registrations found for the issuer.
         | 
| 17 | 
            +
                  # @return [Array<Mindee::CompanyRegistrationField>]
         | 
| 24 18 | 
             
                  attr_reader :issuer_company_registration
         | 
| 25 | 
            -
                  #  | 
| 19 | 
            +
                  # The address of the document's issuer.
         | 
| 26 20 | 
             
                  # @return [Mindee::TextField]
         | 
| 27 | 
            -
                  attr_reader : | 
| 28 | 
            -
                  #  | 
| 21 | 
            +
                  attr_reader :issuer_address
         | 
| 22 | 
            +
                  # The name of the person or company receiving the document.
         | 
| 29 23 | 
             
                  # @return [Mindee::TextField]
         | 
| 30 | 
            -
                  attr_reader : | 
| 31 | 
            -
                  #  | 
| 32 | 
            -
                  # @return [Array<Mindee:: | 
| 24 | 
            +
                  attr_reader :recipient_name
         | 
| 25 | 
            +
                  # List of company registrations found for the recipient.
         | 
| 26 | 
            +
                  # @return [Array<Mindee::CompanyRegistrationField>]
         | 
| 33 27 | 
             
                  attr_reader :recipient_company_registration
         | 
| 34 | 
            -
                  #  | 
| 28 | 
            +
                  # The address of the recipient.
         | 
| 35 29 | 
             
                  # @return [Mindee::TextField]
         | 
| 36 | 
            -
                  attr_reader : | 
| 30 | 
            +
                  attr_reader :recipient_address
         | 
| 31 | 
            +
                  # List of dates found on the document.
         | 
| 32 | 
            +
                  # @return [Array<Mindee::DateField>]
         | 
| 33 | 
            +
                  attr_reader :dates
         | 
| 34 | 
            +
                  # The date the document was issued.
         | 
| 35 | 
            +
                  # @return [Mindee::DateField]
         | 
| 36 | 
            +
                  attr_reader :date
         | 
| 37 37 |  | 
| 38 38 | 
             
                  # @param prediction [Hash]
         | 
| 39 39 | 
             
                  # @param page_id [Integer, nil]
         | 
| 40 40 | 
             
                  def initialize(prediction, page_id)
         | 
| 41 41 | 
             
                    super
         | 
| 42 | 
            -
                    @locale = Locale.new(prediction['locale'])
         | 
| 43 | 
            -
                    @date = DateField.new(prediction['date'], page_id)
         | 
| 44 | 
            -
                    @dates = []
         | 
| 45 | 
            -
                    prediction['dates'].each do |item|
         | 
| 46 | 
            -
                      @dates.push(DateField.new(item, page_id))
         | 
| 47 | 
            -
                    end
         | 
| 42 | 
            +
                    @locale = Locale.new(prediction['locale'], page_id)
         | 
| 48 43 | 
             
                    @issuer_name = TextField.new(prediction['issuer_name'], page_id)
         | 
| 49 | 
            -
                    @issuer_address = TextField.new(prediction['issuer_address'], page_id)
         | 
| 50 44 | 
             
                    @issuer_company_registration = []
         | 
| 51 45 | 
             
                    prediction['issuer_company_registration'].each do |item|
         | 
| 52 46 | 
             
                      @issuer_company_registration.push(CompanyRegistration.new(item, page_id))
         | 
| 53 47 | 
             
                    end
         | 
| 48 | 
            +
                    @issuer_address = TextField.new(prediction['issuer_address'], page_id)
         | 
| 54 49 | 
             
                    @recipient_name = TextField.new(prediction['recipient_name'], page_id)
         | 
| 55 | 
            -
                    @recipient_address = TextField.new(prediction['recipient_address'], page_id)
         | 
| 56 50 | 
             
                    @recipient_company_registration = []
         | 
| 57 51 | 
             
                    prediction['recipient_company_registration'].each do |item|
         | 
| 58 52 | 
             
                      @recipient_company_registration.push(CompanyRegistration.new(item, page_id))
         | 
| 59 53 | 
             
                    end
         | 
| 54 | 
            +
                    @recipient_address = TextField.new(prediction['recipient_address'], page_id)
         | 
| 55 | 
            +
                    @dates = []
         | 
| 56 | 
            +
                    prediction['dates'].each do |item|
         | 
| 57 | 
            +
                      @dates.push(DateField.new(item, page_id))
         | 
| 58 | 
            +
                    end
         | 
| 59 | 
            +
                    @date = DateField.new(prediction['date'], page_id)
         | 
| 60 60 | 
             
                  end
         | 
| 61 61 |  | 
| 62 62 | 
             
                  def to_s
         | 
| 63 | 
            -
                     | 
| 64 | 
            -
                     | 
| 65 | 
            -
                    dates = @dates.join("\n | 
| 63 | 
            +
                    issuer_company_registration = @issuer_company_registration.join("\n #{' ' * 30}")
         | 
| 64 | 
            +
                    recipient_company_registration = @recipient_company_registration.join("\n #{' ' * 33}")
         | 
| 65 | 
            +
                    dates = @dates.join("\n #{' ' * 7}")
         | 
| 66 66 | 
             
                    out_str = String.new
         | 
| 67 67 | 
             
                    out_str << "\n:Locale: #{@locale}".rstrip
         | 
| 68 | 
            -
                    out_str << "\n:Issuer  | 
| 68 | 
            +
                    out_str << "\n:Issuer Name: #{@issuer_name}".rstrip
         | 
| 69 | 
            +
                    out_str << "\n:Issuer Company Registrations: #{issuer_company_registration}".rstrip
         | 
| 69 70 | 
             
                    out_str << "\n:Issuer Address: #{@issuer_address}".rstrip
         | 
| 70 | 
            -
                    out_str << "\n: | 
| 71 | 
            -
                    out_str << "\n:Recipient  | 
| 71 | 
            +
                    out_str << "\n:Recipient Name: #{@recipient_name}".rstrip
         | 
| 72 | 
            +
                    out_str << "\n:Recipient Company Registrations: #{recipient_company_registration}".rstrip
         | 
| 72 73 | 
             
                    out_str << "\n:Recipient Address: #{@recipient_address}".rstrip
         | 
| 73 | 
            -
                    out_str << "\n:Recipient Company Registrations: #{recipient_company_registrations}".rstrip
         | 
| 74 | 
            -
                    out_str << "\n:Issuance date: #{@date}".rstrip
         | 
| 75 74 | 
             
                    out_str << "\n:Dates: #{dates}".rstrip
         | 
| 75 | 
            +
                    out_str << "\n:Date of Issue: #{@date}".rstrip
         | 
| 76 76 | 
             
                    out_str[1..].to_s
         | 
| 77 77 | 
             
                  end
         | 
| 78 78 | 
             
                end
         | 
| @@ -0,0 +1,136 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require_relative '../common_fields'
         | 
| 4 | 
            +
            require_relative '../base'
         | 
| 5 | 
            +
            require_relative 'receipt_v5_line_item'
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            module Mindee
         | 
| 8 | 
            +
              module Prediction
         | 
| 9 | 
            +
                # Expense Receipt v5 prediction results.
         | 
| 10 | 
            +
                class ReceiptV5 < Prediction
         | 
| 11 | 
            +
                  # The locale identifier in BCP 47 (RFC 5646) format: ISO language code, '-', ISO country code.
         | 
| 12 | 
            +
                  # @return [Mindee::Locale]
         | 
| 13 | 
            +
                  attr_reader :locale
         | 
| 14 | 
            +
                  # The receipt category among predefined classes.
         | 
| 15 | 
            +
                  # @return [Mindee::TextField]
         | 
| 16 | 
            +
                  attr_reader :category
         | 
| 17 | 
            +
                  # The receipt sub category among predefined classes for transport and food.
         | 
| 18 | 
            +
                  # @return [Mindee::TextField]
         | 
| 19 | 
            +
                  attr_reader :subcategory
         | 
| 20 | 
            +
                  # Whether the document is an expense receipt or a credit card receipt.
         | 
| 21 | 
            +
                  # @return [Mindee::TextField]
         | 
| 22 | 
            +
                  attr_reader :document_type
         | 
| 23 | 
            +
                  # The date the purchase was made.
         | 
| 24 | 
            +
                  # @return [Mindee::DateField]
         | 
| 25 | 
            +
                  attr_reader :date
         | 
| 26 | 
            +
                  # Time of purchase with 24 hours formatting (HH:MM).
         | 
| 27 | 
            +
                  # @return [Mindee::TextField]
         | 
| 28 | 
            +
                  attr_reader :time
         | 
| 29 | 
            +
                  # The total amount paid including taxes, discounts, fees, tips, and gratuity.
         | 
| 30 | 
            +
                  # @return [Mindee::AmountField]
         | 
| 31 | 
            +
                  attr_reader :total_amount
         | 
| 32 | 
            +
                  # The total amount excluding taxes.
         | 
| 33 | 
            +
                  # @return [Mindee::AmountField]
         | 
| 34 | 
            +
                  attr_reader :total_net
         | 
| 35 | 
            +
                  # The total amount of taxes.
         | 
| 36 | 
            +
                  # @return [Mindee::AmountField]
         | 
| 37 | 
            +
                  attr_reader :total_tax
         | 
| 38 | 
            +
                  # The total amount of tip and gratuity.
         | 
| 39 | 
            +
                  # @return [Mindee::AmountField]
         | 
| 40 | 
            +
                  attr_reader :tip
         | 
| 41 | 
            +
                  # List of tax lines information including: Amount, tax rate, tax base amount and tax code.
         | 
| 42 | 
            +
                  # @return [Array<Mindee::TaxField>]
         | 
| 43 | 
            +
                  attr_reader :taxes
         | 
| 44 | 
            +
                  # The name of the supplier or merchant.
         | 
| 45 | 
            +
                  # @return [Mindee::TextField]
         | 
| 46 | 
            +
                  attr_reader :supplier_name
         | 
| 47 | 
            +
                  # List of supplier company registrations or identifiers.
         | 
| 48 | 
            +
                  # @return [Array<Mindee::CompanyRegistration>]
         | 
| 49 | 
            +
                  attr_reader :supplier_company_registrations
         | 
| 50 | 
            +
                  # The address of the supplier or merchant returned as a single string.
         | 
| 51 | 
            +
                  # @return [Mindee::TextField]
         | 
| 52 | 
            +
                  attr_reader :supplier_address
         | 
| 53 | 
            +
                  # The Phone number of the supplier or merchant returned as a single string.
         | 
| 54 | 
            +
                  # @return [Mindee::TextField]
         | 
| 55 | 
            +
                  attr_reader :supplier_phone_number
         | 
| 56 | 
            +
                  # Full extraction of lines, including: description, quantity, unit price and total.
         | 
| 57 | 
            +
                  # @return [Array<Mindee::ReceiptV5LineItem>]
         | 
| 58 | 
            +
                  attr_reader :line_items
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                  # @param prediction [Hash]
         | 
| 61 | 
            +
                  # @param page_id [Integer, nil]
         | 
| 62 | 
            +
                  def initialize(prediction, page_id)
         | 
| 63 | 
            +
                    super
         | 
| 64 | 
            +
                    @locale = Locale.new(prediction['locale'], page_id)
         | 
| 65 | 
            +
                    @category = TextField.new(prediction['category'], page_id)
         | 
| 66 | 
            +
                    @subcategory = TextField.new(prediction['subcategory'], page_id)
         | 
| 67 | 
            +
                    @document_type = TextField.new(prediction['document_type'], page_id)
         | 
| 68 | 
            +
                    @date = DateField.new(prediction['date'], page_id)
         | 
| 69 | 
            +
                    @time = TextField.new(prediction['time'], page_id)
         | 
| 70 | 
            +
                    @total_amount = AmountField.new(prediction['total_amount'], page_id)
         | 
| 71 | 
            +
                    @total_net = AmountField.new(prediction['total_net'], page_id)
         | 
| 72 | 
            +
                    @total_tax = AmountField.new(prediction['total_tax'], page_id)
         | 
| 73 | 
            +
                    @tip = AmountField.new(prediction['tip'], page_id)
         | 
| 74 | 
            +
                    @taxes = []
         | 
| 75 | 
            +
                    prediction['taxes'].each do |item|
         | 
| 76 | 
            +
                      @taxes.push(TaxField.new(item, page_id))
         | 
| 77 | 
            +
                    end
         | 
| 78 | 
            +
                    @supplier_name = TextField.new(prediction['supplier_name'], page_id)
         | 
| 79 | 
            +
                    @supplier_company_registrations = []
         | 
| 80 | 
            +
                    prediction['supplier_company_registrations'].each do |item|
         | 
| 81 | 
            +
                      @supplier_company_registrations.push(CompanyRegistration.new(item, page_id))
         | 
| 82 | 
            +
                    end
         | 
| 83 | 
            +
                    @supplier_address = TextField.new(prediction['supplier_address'], page_id)
         | 
| 84 | 
            +
                    @supplier_phone_number = TextField.new(prediction['supplier_phone_number'], page_id)
         | 
| 85 | 
            +
                    @line_items = []
         | 
| 86 | 
            +
                    prediction['line_items'].each do |item|
         | 
| 87 | 
            +
                      @line_items.push(ReceiptV5LineItem.new(item, page_id))
         | 
| 88 | 
            +
                    end
         | 
| 89 | 
            +
                  end
         | 
| 90 | 
            +
             | 
| 91 | 
            +
                  # @return String
         | 
| 92 | 
            +
                  def to_s
         | 
| 93 | 
            +
                    taxes = @taxes.join("\n #{' ' * 7}")
         | 
| 94 | 
            +
                    supplier_company_registrations = @supplier_company_registrations.join("\n #{' ' * 32}")
         | 
| 95 | 
            +
                    line_items = line_items_to_s
         | 
| 96 | 
            +
                    out_str = String.new
         | 
| 97 | 
            +
                    out_str << "\n:Expense Locale: #{@locale}".rstrip
         | 
| 98 | 
            +
                    out_str << "\n:Expense Category: #{@category}".rstrip
         | 
| 99 | 
            +
                    out_str << "\n:Expense Sub Category: #{@subcategory}".rstrip
         | 
| 100 | 
            +
                    out_str << "\n:Document Type: #{@document_type}".rstrip
         | 
| 101 | 
            +
                    out_str << "\n:Purchase Date: #{@date}".rstrip
         | 
| 102 | 
            +
                    out_str << "\n:Purchase Time: #{@time}".rstrip
         | 
| 103 | 
            +
                    out_str << "\n:Total Amount: #{@total_amount}".rstrip
         | 
| 104 | 
            +
                    out_str << "\n:Total Excluding Taxes: #{@total_net}".rstrip
         | 
| 105 | 
            +
                    out_str << "\n:Total Tax: #{@total_tax}".rstrip
         | 
| 106 | 
            +
                    out_str << "\n:Tip and Gratuity: #{@tip}".rstrip
         | 
| 107 | 
            +
                    out_str << "\n:Taxes: #{taxes}".rstrip
         | 
| 108 | 
            +
                    out_str << "\n:Supplier Name: #{@supplier_name}".rstrip
         | 
| 109 | 
            +
                    out_str << "\n:Supplier Company Registrations: #{supplier_company_registrations}".rstrip
         | 
| 110 | 
            +
                    out_str << "\n:Supplier Address: #{@supplier_address}".rstrip
         | 
| 111 | 
            +
                    out_str << "\n:Supplier Phone Number: #{@supplier_phone_number}".rstrip
         | 
| 112 | 
            +
                    out_str << "\n:Line Items:"
         | 
| 113 | 
            +
                    out_str << line_items
         | 
| 114 | 
            +
                    out_str[1..].to_s
         | 
| 115 | 
            +
                  end
         | 
| 116 | 
            +
             | 
| 117 | 
            +
                  private
         | 
| 118 | 
            +
             | 
| 119 | 
            +
                  def line_items_separator(char)
         | 
| 120 | 
            +
                    "  +#{char * 38}+#{char * 10}+#{char * 14}+#{char * 12}+"
         | 
| 121 | 
            +
                  end
         | 
| 122 | 
            +
             | 
| 123 | 
            +
                  def line_items_to_s
         | 
| 124 | 
            +
                    return '' if @line_items.empty?
         | 
| 125 | 
            +
             | 
| 126 | 
            +
                    line_items = @line_items.map(&:to_s).join("\n#{line_items_separator('-')}\n  ")
         | 
| 127 | 
            +
                    out_str = String.new
         | 
| 128 | 
            +
                    out_str << "\n#{line_items_separator('-')}"
         | 
| 129 | 
            +
                    out_str << "\n  | Description #{' ' * 25}| Quantity | Total Amount | Unit Price |"
         | 
| 130 | 
            +
                    out_str << "\n#{line_items_separator('=')}"
         | 
| 131 | 
            +
                    out_str << "\n  #{line_items}"
         | 
| 132 | 
            +
                    out_str << "\n#{line_items_separator('-')}"
         | 
| 133 | 
            +
                  end
         | 
| 134 | 
            +
                end
         | 
| 135 | 
            +
              end
         | 
| 136 | 
            +
            end
         | 
| @@ -0,0 +1,37 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Mindee
         | 
| 4 | 
            +
              # Full extraction of lines, including: description, quantity, unit price and total.
         | 
| 5 | 
            +
              class ReceiptV5LineItem
         | 
| 6 | 
            +
                # The item description.
         | 
| 7 | 
            +
                # @return [String]
         | 
| 8 | 
            +
                attr_reader :description
         | 
| 9 | 
            +
                # The item quantity.
         | 
| 10 | 
            +
                # @return [Float]
         | 
| 11 | 
            +
                attr_reader :quantity
         | 
| 12 | 
            +
                # The item total amount.
         | 
| 13 | 
            +
                # @return [Float]
         | 
| 14 | 
            +
                attr_reader :total_amount
         | 
| 15 | 
            +
                # The item unit price.
         | 
| 16 | 
            +
                # @return [Float]
         | 
| 17 | 
            +
                attr_reader :unit_price
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                def initialize(prediction, page_id)
         | 
| 20 | 
            +
                  @description = prediction['description']
         | 
| 21 | 
            +
                  @quantity = prediction['quantity']
         | 
| 22 | 
            +
                  @total_amount = prediction['total_amount']
         | 
| 23 | 
            +
                  @unit_price = prediction['unit_price']
         | 
| 24 | 
            +
                  @page_id = page_id
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                # @return String
         | 
| 28 | 
            +
                def to_s
         | 
| 29 | 
            +
                  out_str = String.new
         | 
| 30 | 
            +
                  out_str << format('| %- 37s', @description)
         | 
| 31 | 
            +
                  out_str << format('| %- 9s', Field.float_to_string(@quantity))
         | 
| 32 | 
            +
                  out_str << format('| %- 13s', Field.float_to_string(@total_amount))
         | 
| 33 | 
            +
                  out_str << format('| %- 11s', Field.float_to_string(@unit_price))
         | 
| 34 | 
            +
                  out_str << '|'
         | 
| 35 | 
            +
                end
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
            end
         | 
| @@ -29,8 +29,8 @@ module Mindee | |
| 29 29 | 
             
                  def to_s
         | 
| 30 30 | 
             
                    out_str = String.new
         | 
| 31 31 | 
             
                    out_str << "\n:Owner: #{@owner}".rstrip
         | 
| 32 | 
            -
                    out_str << "\n:Serial  | 
| 33 | 
            -
                    out_str << "\n:Size and  | 
| 32 | 
            +
                    out_str << "\n:Serial Number: #{@serial_number}".rstrip
         | 
| 33 | 
            +
                    out_str << "\n:Size and Type: #{@size_type}".rstrip
         | 
| 34 34 | 
             
                    out_str[1..].to_s
         | 
| 35 35 | 
             
                  end
         | 
| 36 36 | 
             
                end
         | 
| @@ -6,6 +6,7 @@ require_relative 'prediction/financial_document/financial_document_v1' | |
| 6 6 | 
             
            require_relative 'prediction/invoice/invoice_v4'
         | 
| 7 7 | 
             
            require_relative 'prediction/passport/passport_v1'
         | 
| 8 8 | 
             
            require_relative 'prediction/receipt/receipt_v4'
         | 
| 9 | 
            +
            require_relative 'prediction/receipt/receipt_v5'
         | 
| 9 10 | 
             
            require_relative 'prediction/eu/license_plate/license_plate_v1'
         | 
| 10 11 | 
             
            require_relative 'prediction/shipping_container/shipping_container_v1'
         | 
| 11 12 | 
             
            require_relative 'prediction/us/bank_check/bank_check_v1'
         | 
    
        data/lib/mindee/version.rb
    CHANGED
    
    
    
        data/mindee.gemspec
    CHANGED
    
    | @@ -30,10 +30,10 @@ Gem::Specification.new do |spec| | |
| 30 30 | 
             
              spec.required_ruby_version = Gem::Requirement.new('>= 2.6')
         | 
| 31 31 |  | 
| 32 32 | 
             
              spec.add_runtime_dependency 'marcel', '~> 1.0.2'
         | 
| 33 | 
            -
              spec.add_runtime_dependency 'origamindee', '~> 3.1'
         | 
| 33 | 
            +
              spec.add_runtime_dependency 'origamindee', '~> 3.1.0'
         | 
| 34 34 |  | 
| 35 | 
            -
              spec.add_development_dependency 'rake', '~> 12.3'
         | 
| 36 | 
            -
              spec.add_development_dependency 'rspec', '~> 3. | 
| 37 | 
            -
              spec.add_development_dependency 'rubocop', '~> 1. | 
| 38 | 
            -
              spec.add_development_dependency 'yard', '~> 0.9'
         | 
| 35 | 
            +
              spec.add_development_dependency 'rake', '~> 12.3.3'
         | 
| 36 | 
            +
              spec.add_development_dependency 'rspec', '~> 3.12.0'
         | 
| 37 | 
            +
              spec.add_development_dependency 'rubocop', '~> 1.49.0'
         | 
| 38 | 
            +
              spec.add_development_dependency 'yard', '~> 0.9.34'
         | 
| 39 39 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: mindee
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2. | 
| 4 | 
            +
              version: 2.2.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Mindee, SA
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2023- | 
| 11 | 
            +
            date: 2023-05-22 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: marcel
         | 
| @@ -30,70 +30,70 @@ dependencies: | |
| 30 30 | 
             
                requirements:
         | 
| 31 31 | 
             
                - - "~>"
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version:  | 
| 33 | 
            +
                    version: 3.1.0
         | 
| 34 34 | 
             
              type: :runtime
         | 
| 35 35 | 
             
              prerelease: false
         | 
| 36 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 37 | 
             
                requirements:
         | 
| 38 38 | 
             
                - - "~>"
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version:  | 
| 40 | 
            +
                    version: 3.1.0
         | 
| 41 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 42 | 
             
              name: rake
         | 
| 43 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 44 | 
             
                requirements:
         | 
| 45 45 | 
             
                - - "~>"
         | 
| 46 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version:  | 
| 47 | 
            +
                    version: 12.3.3
         | 
| 48 48 | 
             
              type: :development
         | 
| 49 49 | 
             
              prerelease: false
         | 
| 50 50 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 51 | 
             
                requirements:
         | 
| 52 52 | 
             
                - - "~>"
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version:  | 
| 54 | 
            +
                    version: 12.3.3
         | 
| 55 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 56 | 
             
              name: rspec
         | 
| 57 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 58 | 
             
                requirements:
         | 
| 59 59 | 
             
                - - "~>"
         | 
| 60 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version:  | 
| 61 | 
            +
                    version: 3.12.0
         | 
| 62 62 | 
             
              type: :development
         | 
| 63 63 | 
             
              prerelease: false
         | 
| 64 64 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 65 | 
             
                requirements:
         | 
| 66 66 | 
             
                - - "~>"
         | 
| 67 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version:  | 
| 68 | 
            +
                    version: 3.12.0
         | 
| 69 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 70 | 
             
              name: rubocop
         | 
| 71 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 72 | 
             
                requirements:
         | 
| 73 73 | 
             
                - - "~>"
         | 
| 74 74 | 
             
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            -
                    version:  | 
| 75 | 
            +
                    version: 1.49.0
         | 
| 76 76 | 
             
              type: :development
         | 
| 77 77 | 
             
              prerelease: false
         | 
| 78 78 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 79 | 
             
                requirements:
         | 
| 80 80 | 
             
                - - "~>"
         | 
| 81 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            -
                    version:  | 
| 82 | 
            +
                    version: 1.49.0
         | 
| 83 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 84 | 
             
              name: yard
         | 
| 85 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 86 | 
             
                requirements:
         | 
| 87 87 | 
             
                - - "~>"
         | 
| 88 88 | 
             
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            -
                    version:  | 
| 89 | 
            +
                    version: 0.9.34
         | 
| 90 90 | 
             
              type: :development
         | 
| 91 91 | 
             
              prerelease: false
         | 
| 92 92 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 93 | 
             
                requirements:
         | 
| 94 94 | 
             
                - - "~>"
         | 
| 95 95 | 
             
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            -
                    version:  | 
| 96 | 
            +
                    version: 0.9.34
         | 
| 97 97 | 
             
            description: Quickly and easily connect to Mindee's API services using Ruby.
         | 
| 98 98 | 
             
            email:
         | 
| 99 99 | 
             
            - devrel@mindee.co
         | 
| @@ -123,6 +123,7 @@ files: | |
| 123 123 | 
             
            - docs/code_samples/custom_v1.txt
         | 
| 124 124 | 
             
            - docs/code_samples/default.txt
         | 
| 125 125 | 
             
            - docs/code_samples/expense_receipts_v4.txt
         | 
| 126 | 
            +
            - docs/code_samples/expense_receipts_v5.txt
         | 
| 126 127 | 
             
            - docs/code_samples/financial_document_v1.txt
         | 
| 127 128 | 
             
            - docs/code_samples/idcard_fr_v1.txt
         | 
| 128 129 | 
             
            - docs/code_samples/invoices_v4.txt
         | 
| @@ -164,15 +165,17 @@ files: | |
| 164 165 | 
             
            - lib/mindee/parsing/prediction/custom/fields.rb
         | 
| 165 166 | 
             
            - lib/mindee/parsing/prediction/eu/license_plate/license_plate_v1.rb
         | 
| 166 167 | 
             
            - lib/mindee/parsing/prediction/financial_document/financial_document_v1.rb
         | 
| 167 | 
            -
            - lib/mindee/parsing/prediction/financial_document/ | 
| 168 | 
            +
            - lib/mindee/parsing/prediction/financial_document/financial_document_v1_line_item.rb
         | 
| 168 169 | 
             
            - lib/mindee/parsing/prediction/fr/bank_account_details/bank_account_details_v1.rb
         | 
| 169 170 | 
             
            - lib/mindee/parsing/prediction/fr/carte_vitale/carte_vitale_v1.rb
         | 
| 170 171 | 
             
            - lib/mindee/parsing/prediction/fr/id_card/id_card_v1.rb
         | 
| 171 | 
            -
            - lib/mindee/parsing/prediction/invoice/invoice_line_item.rb
         | 
| 172 172 | 
             
            - lib/mindee/parsing/prediction/invoice/invoice_v4.rb
         | 
| 173 | 
            +
            - lib/mindee/parsing/prediction/invoice/invoice_v4_line_item.rb
         | 
| 173 174 | 
             
            - lib/mindee/parsing/prediction/passport/passport_v1.rb
         | 
| 174 175 | 
             
            - lib/mindee/parsing/prediction/proof_of_address/proof_of_address_v1.rb
         | 
| 175 176 | 
             
            - lib/mindee/parsing/prediction/receipt/receipt_v4.rb
         | 
| 177 | 
            +
            - lib/mindee/parsing/prediction/receipt/receipt_v5.rb
         | 
| 178 | 
            +
            - lib/mindee/parsing/prediction/receipt/receipt_v5_line_item.rb
         | 
| 176 179 | 
             
            - lib/mindee/parsing/prediction/shipping_container/shipping_container_v1.rb
         | 
| 177 180 | 
             
            - lib/mindee/parsing/prediction/us/bank_check/bank_check_v1.rb
         | 
| 178 181 | 
             
            - lib/mindee/version.rb
         |