...
Table of Contents | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
Payment Transfer Summary is approved or corrected extraction values that are submitted by your application to the extraction system.
You should always submit the summary in order to be able to measure the extraction quality and let Gini know whether the extracted information is correct. This way we can provide the best possible user experience , since it also helps us continuously improve the extraction system and perform valuable data analytics for you.
Info |
---|
The payment transfer summary should only be sent if real users see, approve, correct, and complement the extraction-based data. |
Gini employs various machine learning techniques in order to learn from the payment transfer summary automatically. Therefore, it is equally important for Gini to receive the summary both on correct and incorrect extractions.
...
Ways of submitting the
...
transfer summary
There are currently two ways to submit the summary.
...
The second (rarely used) way is where the final approval signal (button click) is not possible. In such case, send the summary on one label per request.
Types of
...
transfer summaries
positive summary (preferred): the extraction was correct and confirmed by the user without modification.
Anchor positive positive complementary summary: the extraction system extracted nothing, for example, the response doesn't contain the requested label. The user manually entered the correct value.
Anchor complementary complementary negative summary: the extraction was incomplete or erroneous. The user manually corrected the extraction.
Anchor negative negative informative summary: the extraction was changed for another reason, for example, if a line item is returned, the quantity extraction gets summary "0" and a return reason.
...
The Gini Pay API lets you submit payment transfer summary on multiple extractions for a single document with a single request. It is strongly recommended that you submit the summary in this way for two reasons. On the one hand, the total number of round trips is reduced to one and the summary is handled internally as a batch. Therefore, the update is more efficient for multiple extractions compared to submitting the summary with each separate request. On the other hand, Gini's machine learning training techniques can benefit from the summary on multiple extractions, since Gini is aware of the fact that single parts of the submitted summary belong together.
Info |
---|
Send payment transfer summary only on those labels that are physically seen by the user. Unseen labels except Return Assistant (RA) specific “amountsAreConsistent” should be filtered out. |
Code Block | ||
---|---|---|
| ||
//submitting paymenttransfer summary on extractions PUT /documents/{id}/extractions/feedback |
Request
Headers
...
Header
...
Value
Note |
---|
IMPORTANT! In REST requests, the transfer summary is called feedback. Hence, in the examples below, “feedback” is transfer summary. |
Request
Headers
Header | Value |
---|---|
|
|
Body
Key | Type | Description |
---|---|---|
|
| Payment transfer summary on atomic extractions. |
|
| Payment transfer summary on compound extractions. |
Response
Status Code | Description |
---|---|
204 (No Content) | The payment transfer summary was successfully processed. |
404 (Not Found) | The document or the label could not be found. |
406 (Not Acceptable) | The request headers were not set correctly. |
422 (Unprocessable Entity) | At least one value was not valid regarding entity validation rules of the label. |
Test example
In order to test the integration of the summary functionality, we offer a PDF test document with the expected outcome in a JSON format. This document can be used for an integration test of Gini’s Pay API in general. Furthermore, we provide a query for sending summary where all fields are correct except for the amountToPay
. After sending this summary, we show you how to ensure that the summary with your confirmation and correction for the field values was successful.
Sending the test document to the Gini Pay API. See Submit Files.
Requesting the results. See Retrieve Extractions.
You should get a JSON like in the example.
Correcting the document with the following JSON. Here we change the
amountToPay
from "995.00:EUR" to "950.00:EUR" and confirm the other field values (iban
,bic
,paymentRecipient
,paymentReference
).
Code Block | ||
---|---|---|
| ||
{ "feedback": { "amountToPay": { "value": "950.00:EUR" }, "iban": { "value": "DE68130300000017850360" }, "bic": { ""value": "BYLADEM1001" }, "paymentPurpose": { "value": "RE-20170512-02" }, "paymentRecipient": { "value": "Fahrrad Rückenwind" } } } | ||
Code Block | ||
|
Below we show a more elaborated example including the Return Assistant compound extractions (if RA is enabled) in order to explain different types of the transfer summary. In our current API, we started to support alternative JSON keys for it. For example, instead of "feedback"
key when submitting the summary, you can use "extractions"
and "compoundExtractions"
as you will see in the examples below.
The next example scenario is as follows: the user uploads a document where the labels amountToPay
, paymentReference
, iban
, discount-addon
are extracted. Unfortunately, the label paymentRecipient
could not be extracted. Such response to the extractions request is as follows:
Info |
---|
The boxes are optional. Boxes should only be sent if your use case visualizes the document with the locations of the extractions. Thus, the user can confirm the correct location of an extraction. |
Code Block | ||
---|---|---|
| ||
{ "candidates": { }, "extractions": { "amountToPay"amountToPay": { "box": { "height": 8.0, "left": 545.0, "page": 1, "top": 586.0, "width": 17.0 }, "candidates": ""candidates": "amounts", "entity": "amount", "value": "545.6044:EUR" }, "iban": { "box": { "height": 7.0, "left": 447.0, "page": 1, "page": 1, "top": 746.0, "width": 100.0 }, "candidates": "ibans", "entity": "iban", "value": "DE68130300000017850360DE14200800000816170700" }, "paymentReference"paymentReference": { "entity": "reference", "value": "ReNr 123, KdNr 32" } }, "compoundExtractionsdiscount-addon": { "lineItemsentity": ["amount", "value": "-2.51:EUR" {}, "amountsAreConsistent": { "artNumberentity": { "text", "value": "10101true", } }, "compoundExtractions": { "entitylineItems": "text" ,[ { "boxartNumber": { "value": "10101", "heightentity": 7.0,"text" }, "left"quantity": 55.0, { "page"value": 1"2", "entity": "numeric" "top": 546.0}, "description": { "widthvalue": 100.0 "Trocknerbälle, Wolle, 2er", } "entity": "text" }, "quantity"sumGross": { "value": "1217.98:EUR", "entity": "numericamount" } }, }, { "artNumber": { "artNumber": { ""value": "10103", "entity": "text" }, "quantity": { "value": "3", "entity": "numeric" }, } "description": { } "value": "Faltenstopp f. Wäscheständer", ] } }"entity": "text" //The user adds missing paymentRecipient value (complementary summary)}, and corrects the paymentReference to "ReNr 1735, KdNr 37"sumGross": (negative{ summary). Sets the quantity of one line item to 0 and adds a reason for returning the articles. The iban, amountToPay and the remaining part of lineItems are correct (positive feedback). The document is not shown, so we can leave out the boxes. Then the resulting feedback request is as follows: { "extractions": { "amountToPay": { "value": "5.60:EUR" }, "iban"value": "29.97:EUR", "entity": "amount" } } ] } } |
The iban
, amountToPay
, discount-addon
and the lineItems
are correct (positive summary). amountsAreConsistent
should be always delivered if it exists in the extractions response. The user adds the missing paymentRecipient
value (complementary summary) and corrects the paymentReference
to "ReNr 1735, KdNr 37" (negative summary). Sets the quantity of one line item to “0” and adds a reason for returning the articles.
Then the resulting transfer summary request to submit is as follows:
Code Block | ||
---|---|---|
| ||
{ "extractions": { "amountToPay": { "value": "DE68130300000017850360" 45.44:EUR" }, "paymentReferenceiban": { "value": "ReNr 1735, KdNr 37" DE14200800000816170700" }, "paymentRecipientbic": { "value": "Zalando SE" BYLADEM1001" }, }, "compoundExtractionspaymentPurpose": { "lineItemsvalue": [ "RE-20170512-02" }, "paymentRecipient": { "value": "Tchibo GmbH" }, "artNumberamountsAreConsistent": { "entity": "text", "value": "10101true" }, "discount-addon": { }, "entity": "amount", "quantityvalue": {"-2.51:EUR" } }, "compoundExtractions": { "valuelineItems": "0"[ { }, "artNumber": { "value": "returnReason10101": { }, "valuequantity": "r3"{ "value": "0" } }, }, "description": { { "value": "Trocknerbälle, Wolle, 2er", "artNumberentity": "text" { }, "valuesumGross": "10103"{ }"value": "17.98:EUR", "quantity": {"entity": "amount" }, "valuereturnReason": "3"{ "value": "r3" } } }, { ] } } Give summary and correct or verify multiple specific labeled extraction patterns with a single PUT or POST request to the document extractions URI. The labels must correspond to the names of the extraction types e.g. amountToPay. See available specific extractions for possible values. Headers Header Value Content-Type application/vnd.gini.v1+json Body Key Type Description extractions object Summary on atomic extractions compoundExtractions object Summary on compound extractions The boxes are optional. Boxes should only be sent if your use case visualize the document with the locations of the extractions. Thus, the user can confirm the correct location of a extraction. Response Status Code Description 204 (No Content) The summary was successfully processed. 404 (Not Found) The document or the label could not be found. 406 (Not Acceptable) The request headers were not set correctly. 422 (Unprocessable Entity) At least one value was not valid regarding entity validation rules of the label. Test Example In order to test the integration of the summary functionality, we offer a PDF test document with the expected outcome in a JSON format. This document can be used for an integration test of Gini’s Pay API in general. Furthermore, we provide a query for sending feedback where all fields are correct except for the amountToPay. After sending this feedback we show you how you can ensure that the feedback with your confirmation and correction for the field values was successful. Sending the test document to the Gini Pay API (see also submitting files) Requesting the results (see also retrieving extractions) You should get a JSON like in example. Correcting the document with the following JSON (see also submitting summary on extractions). Here we change the amountToPay from "995.00:EUR" to "950.00:EUR" and confirm the other field values (iban, bic, paymentRecipient, paymentReference). { "feedback": { "amountToPay": { "value": "950.00:EUR" }, "iban": { "value": "DE68130300000017850360" }, "bic": { "value": "BYLADEM1001" }, "paymentPurpose": { "value": "RE-20170512-02" }, "paymentRecipient": { "value": "Fahrrad Rückenwind" } } } |
Submit payment summary on invalid extractions
...
"artNumber": {
"value": "10103"
},
"quantity": {
"value": "3"
},
"description": {
"value": "Faltenstopp f. Wäscheständer",
"entity": "text"
},
"sumGross": {
"value": "29.97:EUR",
"entity": "amount"
}
}
]
}
} |
Info |
---|
Notice, that |
Submit transfer summary on invalid extractions
Request
In case an extraction was erroneously found (i.e. not present in the source document), you can delete it by issuing a DELETE
request to the extraction URI:
Code Block | ||
---|---|---|
| ||
//submitting summary on invalid extractions
DELETE /documents/{id}/extractions/{label} |
Response
Status Code | Description |
---|---|
204 (No Content) | Label removal was successful. |
404 (Not Found) | The document or the label could not be found. |
...
language | json |
---|
...