get
https://api.fido.id/{version}/document/
Trustfull Document
Recent Requests
Log in to see full request history
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Loading…
Gets the result of a Trustfull Document check that you started with the POST call, by request ID.
To use this API, you must first initiate a request to the Document API.
This initial call uploads the file and starts the analysis pipeline.
Once the pipeline is running, you can use this API to retrieve the results. If the analysis is not yet complete, the endpoint will return a response with a status of processing:
{
"status": "processing",
"message": "The request is still being processed"
}When the analysis is complete, the API returns the document signals.
Response
Following an example of the response:
{
"resolution_id": "...",
"customer_id": "...",
"model_id": "...",
"device_request_time": "...",
"claims": [
"document"
],
"value": "https://assets.trustfull.com/documents/{resolution_id}/{uuid}.pdf",
"file_type": "PDF",
"document_type": "payslip",
"image_quality": "high",
"modality": "pdf_native",
"extractable_chars": 1842,
"image_area": 6.73,
"vector_drawings": 27,
"raster_images": 3,
"image_info_mode": "RGB",
"image_info_width": 2480,
"image_info_height": 3508,
"image_info_dpi_x": 300,
"image_info_dpi_y": 300,
"image_info_page_no": 0,
"image_info_is_from_rendered_pdf": true,
"image_info_jpeg_qtable_count": 2,
"image_metrics_sharpness": 4221.83,
"image_metrics_contrast": 48.71,
"ocr_readability_confidence": 78,
"ocr_readability_words_count": 412,
"content_skew_angle": 0.18,
"analysis_status": "ok",
"score": 500,
"score_cluster": "review",
"score_model_used": "document_score",
"reason_codes": "TDOC001",
"risks_number": 0,
"trusts_number": 1,
"metadata_software": "iTextSharp 5.5.13.2",
"metadata_creator": "iTextSharpLite v5.3",
"metadata_author": "Payroll System",
"metadata_title": "Payslip",
"metadata_creation_date": "2026-01-01 11:00:00",
"metadata_creation_date_timezone": "+01:00",
"metadata_mod_date": "2026-01-01 11:00:00",
"metadata_mod_date_timezone": "+01:00",
"metadata_pdf_version": "1.4",
"metadata_page_count": 1,
"metadata_is_encrypted": false,
"metadata_is_xmp_present": false,
"metadata_image_make": "Canon",
"metadata_image_model": "CanoScan LiDE 400",
"metadata_is_present": true,
"metadata_author_is_absent": true,
"metadata_software_is_trusted": true,
"metadata_software_trust_source": "curated_list",
"metadata_is_create_before_edit": true,
"metadata_date_is_in_past": true,
"metadata_is_edit_close_to_create": true,
"metadata_timezone_is_consistent": true,
"xray_payslip_holder_first_name": "ANTONIO",
"xray_payslip_holder_last_name": "SAVIANO",
"xray_payslip_month": 6,
"xray_payslip_year": 2025,
"xray_payslip_net": 1531.4,
"xray_payslip_gross": 3100.3,
"xray_payslip_iban": "IT90J0760103400001054051964",
"ocr_payslip_holder_first_name": "ANTONIO",
"ocr_payslip_holder_last_name": "SAVIANO",
"ocr_payslip_month": 6,
"ocr_payslip_year": 2025,
"ocr_payslip_net": 1531.4,
"ocr_payslip_gross": 3100.3,
"ocr_payslip_iban": "IT90J0760103400001054051964",
"ocr_payslip_holder_first_name_details": "{\"verbatim\":\"ANTONIO\",\"bbox\":{\"x\":0.12,\"y\":0.20,\"width\":0.18,\"height\":0.03}}",
"ocr_payslip_holder_last_name_details": "{\"verbatim\":\"SAVIANO\",\"bbox\":{\"x\":0.32,\"y\":0.20,\"width\":0.20,\"height\":0.03}}",
"ocr_payslip_month_details": "{\"verbatim\":\"GIUGNO\",\"bbox\":{\"x\":0.12,\"y\":0.28,\"width\":0.10,\"height\":0.03}}",
"ocr_payslip_year_details": "{\"verbatim\":\"2025\",\"bbox\":{\"x\":0.24,\"y\":0.28,\"width\":0.06,\"height\":0.03}}",
"ocr_payslip_net_details": "{\"verbatim\":\"1.531,40\",\"bbox\":{\"x\":0.60,\"y\":0.70,\"width\":0.12,\"height\":0.03}}",
"ocr_payslip_gross_details": "{\"verbatim\":\"3.100,30\",\"bbox\":{\"x\":0.60,\"y\":0.66,\"width\":0.12,\"height\":0.03}}",
"ocr_payslip_iban_details": "{\"verbatim\":\"IT90J0760103400001054051964\",\"bbox\":{\"x\":0.12,\"y\":0.80,\"width\":0.40,\"height\":0.03}}",
"ocr_payslip_match_first_name": true,
"ocr_payslip_match_last_name": true,
"ocr_payslip_match_month": true,
"ocr_payslip_match_year": true,
"ocr_payslip_match_net": true,
"ocr_payslip_match_gross": true,
"ocr_payslip_match_iban": true,
"ocr_payslip_match_all": true,
"ocr_payslip_is_complete": true,
"ocr_bank_statement_holder_first_name": "LUCIA",
"ocr_bank_statement_holder_last_name": "GERVASI",
"ocr_bank_statement_iban": "IT11E0200883120000300310092",
"ocr_bank_statement_bank_name": "UNICREDIT",
"ocr_bank_statement_period_start": "2026-01-01",
"ocr_bank_statement_period_end": "2026-03-31",
"ocr_bank_statement_opening_balance": 1818.27,
"ocr_bank_statement_closing_balance": 1686.18,
"ocr_bank_statement_holder_first_name_details": "{\"verbatim\":\"LUCIA\",\"bbox\":{\"x\":0.58,\"y\":0.21,\"width\":0.05,\"height\":0.01}}",
"ocr_bank_statement_holder_last_name_details": "{\"verbatim\":\"GERVASI\",\"bbox\":{\"x\":0.51,\"y\":0.21,\"width\":0.07,\"height\":0.01}}",
"ocr_bank_statement_iban_details": "{\"verbatim\":\"IT11 E02008 83120 000300310092\",\"bbox\":{\"x\":0.07,\"y\":0.15,\"width\":0.32,\"height\":0.01}}",
"ocr_bank_statement_bank_name_details": "{\"verbatim\":\"UNICREDIT\",\"bbox\":{\"x\":0.21,\"y\":0.68,\"width\":0.40,\"height\":0.02}}",
"ocr_bank_statement_period_start_details": "{\"verbatim\":\"01.01.2026\",\"bbox\":{\"x\":0.07,\"y\":0.39,\"width\":0.08,\"height\":0.01}}",
"ocr_bank_statement_period_end_details": "{\"verbatim\":\"31.03.2026\",\"bbox\":{\"x\":0.71,\"y\":0.04,\"width\":0.14,\"height\":0.02}}",
"ocr_bank_statement_opening_balance_details": "{\"verbatim\":\"1.818,27\",\"bbox\":{\"x\":0.11,\"y\":0.52,\"width\":0.05,\"height\":0.01}}",
"ocr_bank_statement_closing_balance_details": "{\"verbatim\":\"1.686,18\",\"bbox\":{\"x\":0.73,\"y\":0.52,\"width\":0.05,\"height\":0.01}}",
"ocr_bank_statement_is_complete": true,
"iban_is_valid": true,
"iban_country": "IT",
"iban_bank_code": "02008",
"iban_branch_code": "83120",
"iban_bic": "UNCRITMM",
"iban_bank_name": "UniCredit S.p.A.",
"bank_statement_iban_is_consistent": true,
"ocr_bank_statement_bank_tax_id": "00348170101",
"iban_bank_tax_id": "[\"00348170101\"]",
"bank_statement_bank_tax_id_is_consistent": true,
"overlapped_text": true,
"overlapped_text_count": 1,
"overlapped_text_details": "[{\"texts\":[\"2.628,30\",\"2.928,34\"],\"page\":1,\"bbox\":{\"x\":0.9072,\"y\":0.7579,\"width\":0.0523,\"height\":0.0117}}]",
"mixed_font_token_count": 1,
"mixed_font_token_details": "[{\"text\":\"14.269,37\",\"fonts\":[\"Cambria,Bold\",\"Courier New,Bold\"],\"page\":2,\"bbox\":{\"x\":0.4435,\"y\":0.575,\"width\":0.0762,\"height\":0.011}}]",
"mixed_fonts_is_absent": false,
"overprint_count": 1,
"overprint_details": "[{\"page\":1,\"bbox\":{\"x\":0.03,\"y\":0.94,\"width\":0.94,\"height\":0.02}}]",
"overprint_is_absent": false,
"pdf_incremental_update": false,
"pdf_incremental_update_count": 0,
"tone_step_score": 0,
"grid_misalignment_score": 0,
"grid_misalignment_region": "{\"page\":1,\"bbox\":{\"x\":0.4478,\"y\":0.0904,\"width\":0.215,\"height\":0.1175}}",
"print_style_deviation_score": 0,
"print_style_deviation_region": "{\"page\":1,\"bbox\":{\"x\":0.5355,\"y\":0.1653,\"width\":0.1355,\"height\":0.0473}}",
"is_physically_intact": true,
"known_format": "it_noipa_payslip",
"known_format_is_present": true,
"known_format_is_consistent": true,
"embedded_fonts": "[\"ArialBoldMT\",\"ArialMT\"]",
"non_embedded_fonts": "[\"TimesNewRomanPSMT\"]",
"rendered_fonts": "[\"ArialMT\"]",
"embedded_fonts_are_absent": false
}The following fields can be found under the "document" object
| name | type |
|---|---|
| value | ?string URL to fetch the uploaded document. Ex: https://assets.trustfull.com/documents/{resolution_id}/{uuid}.pdf |
| file_type | ?string User-friendly file type label, derived server-side from the sniffed MIME at upload time. Ex: PDF Enum: PDF,JPEG,PNG,WEBP |
| document_type | ?string Semantic category of the uploaded document, supplied by the customer at upload. Ex: payslip Enum: payslip,tax_document,bank_statement,utility_bill |
| image_quality | ?string Derived three-cluster image-quality signal computed by the document analysis pipeline. Ex: high Enum: low,medium,high |
| modality | ?string Derived document modality: pdf_native (>=500 chars of selectable text), image_pdf (scanned/flattened PDF), image (non-PDF raster), or other. Ex: pdf_native Enum: pdf_native,image_pdf,image,other |
| extractable_chars | ?integer Number of natively extractable text characters in the document Ex: 1842 |
| image_area | ?number float Percentage (0-100) of the analysed page area covered by raster images Ex: 6.73 |
| vector_drawings | ?integer Count of vector drawing operations in the document Ex: 27 |
| raster_images | ?integer Count of embedded raster images in the document Ex: 3 |
| image_info_mode | ?string Colour mode of the analysed page. Ex: RGB Enum: L,1,P,RGB,RGBA,CMYK,YCbCr |
| image_info_width | ?integer Width in pixels of the analysed page Ex: 2480 |
| image_info_height | ?integer Height in pixels of the analysed page Ex: 3508 |
| image_info_dpi_x | ?integer Horizontal DPI of the analysed page Ex: 300 |
| image_info_dpi_y | ?integer Vertical DPI of the analysed page Ex: 300 |
| image_info_page_no | ?integer Page index analysed (0-based) for multi-page PDFs Ex: 0 |
| image_info_is_from_rendered_pdf | ?boolean True when image stats were measured on a rasterised PDF page Ex: true |
| image_info_jpeg_qtable_count | ?integer Number of JPEG quantisation tables; JPEG-only and unset for PDFs/PNGs Ex: 2 |
| image_metrics_sharpness | ?number float Laplacian-variance sharpness score; higher means sharper text/edges Ex: 4221.83 |
| image_metrics_contrast | ?number float RMS pixel-intensity contrast Ex: 48.71 |
| ocr_readability_confidence | ?number float 25th-percentile per-word OCR confidence (0-100) Ex: 78 |
| ocr_readability_words_count | ?integer Number of words OCR recognised with positive confidence Ex: 412 |
| content_skew_angle | ?number float Dominant content skew in degrees [-90, 90]; 0 is upright Ex: 0.18 |
| analysis_status | ?string Final state of the analysis pipeline: `ok` if it ran and signals were filled in, `error` on a downstream failure, `skip` if no document was attached. Ex: ok Enum: ok,error,skip |
| score | ?integer Document risk score (0-1000). Ex: 500 |
| score_cluster | ?string A cluster summarizing the document outcome. Ex: review Enum: very_low,low,review,high,very_high |
| score_model_used | ?string Identifier of the score model that produced this result. Ex: document_score |
| reason_codes | ?string Comma-separated risk and trust signal codes fired by the document explain chain. Ex: TDOC001 |
| risks_number | ?integer Count of risk signals fired for this document. Ex: 0 |
| trusts_number | ?integer Count of trust signals fired for this document. Ex: 1 |
| metadata_software | ?string Producer software that wrote the file (PDF /Producer or image EXIF Software). Ex: iTextSharp 5.5.13.2 |
| metadata_creator | ?string Originating application (PDF /Creator). Ex: iTextSharpLite v5.3 |
| metadata_author | ?string Document author (PDF /Author or image EXIF Artist). Ex: Payroll System |
| metadata_title | ?string Document title (PDF /Title). Ex: Payslip |
| metadata_creation_date | ?string Creation date, normalized to UTC (YYYY-MM-DD HH:MM:SS). Ex: 2026-01-01 11:00:00 |
| metadata_creation_date_timezone | ?string Original UTC offset of the creation date. Ex: +01:00 |
| metadata_mod_date | ?string Modification date, normalized to UTC (YYYY-MM-DD HH:MM:SS). Ex: 2026-01-01 11:00:00 |
| metadata_mod_date_timezone | ?string Original UTC offset of the modification date. Ex: +01:00 |
| metadata_pdf_version | ?string PDF version. Ex: 1.4 |
| metadata_page_count | ?integer Number of pages in the PDF. Ex: 1 |
| metadata_is_encrypted | ?boolean Whether the PDF is encrypted. Ex: false |
| metadata_is_xmp_present | ?boolean Whether the PDF carries an XMP metadata packet. Ex: false |
| metadata_image_make | ?string Capture device maker (image EXIF Make). Ex: Canon |
| metadata_image_model | ?string Capture device model (image EXIF Model). Ex: CanoScan LiDE 400 |
| metadata_is_present | ?boolean True when the document carries descriptive metadata headers. Ex: true |
| metadata_author_is_absent | ?boolean True when the metadata records no author (expected for a machine-generated document); false when an author is present (unexpected, possibly hand-edited). Ex: true |
| metadata_software_is_trusted | ?boolean True when the producer software is an enterprise automated document generator; false for manual/consumer/online editors; null when unknown. Ex: true |
| metadata_software_trust_source | ?string How the producer-software trust verdict was reached: curated_list or the LLM fallback. Ex: curated_list |
| metadata_is_create_before_edit | ?boolean True when CreationDate precedes ModDate (normal chronology). Ex: true |
| metadata_date_is_in_past | ?boolean True when both creation and modification dates are at or before today (1-day slack). Ex: true |
| metadata_is_edit_close_to_create | ?boolean True when ModDate is within two days of CreationDate. Ex: true |
| metadata_timezone_is_consistent | ?boolean True when CreationDate and ModDate share the same UTC offset. Ex: true |
| xray_payslip_holder_first_name | ?string Payslip holder first name, read from the hidden X-Ray section (payslips only). Ex: ANTONIO |
| xray_payslip_holder_last_name | ?string Payslip holder surname, read from the hidden X-Ray section (payslips only). Ex: SAVIANO |
| xray_payslip_month | ?integer Pay-period month (1-12), read from the hidden X-Ray section. Ex: 6 |
| xray_payslip_year | ?integer Pay-period year, read from the hidden X-Ray section. Ex: 2025 |
| xray_payslip_net | ?number float Net pay, read from the hidden X-Ray section. Ex: 1531.4 |
| xray_payslip_gross | ?number float Total earnings, read from the hidden X-Ray section. Ex: 3100.3 |
| xray_payslip_iban | ?string Payment IBAN, read from the hidden X-Ray section. Ex: IT90J0760103400001054051964 |
| ocr_payslip_holder_first_name | ?string Payslip holder first name read from the printed page (payslips only). Ex: ANTONIO |
| ocr_payslip_holder_last_name | ?string Payslip holder surname read from the printed page (payslips only). Ex: SAVIANO |
| ocr_payslip_month | ?integer Pay-period month (1-12) read from the printed page. Ex: 6 |
| ocr_payslip_year | ?integer Pay-period year read from the printed page. Ex: 2025 |
| ocr_payslip_net | ?number float Net pay read from the printed page. Ex: 1531.4 |
| ocr_payslip_gross | ?number float Total earnings read from the printed page. Ex: 3100.3 |
| ocr_payslip_iban | ?string Payment IBAN read from the printed page. Ex: IT90J0760103400001054051964 |
| ocr_payslip_holder_first_name_details | ?string JSON string with the verbatim printed text and its normalized 0-1 bounding box for the holder first name. Ex: {"verbatim":"ANTONIO","bbox":{"x":0.12,"y":0.20,"width":0.18,"height":0.03}} |
| ocr_payslip_holder_last_name_details | ?string JSON string with the verbatim printed text and its normalized 0-1 bounding box for the holder surname. Ex: {"verbatim":"SAVIANO","bbox":{"x":0.32,"y":0.20,"width":0.20,"height":0.03}} |
| ocr_payslip_month_details | ?string JSON string with the verbatim printed text and its normalized 0-1 bounding box for the pay-period month. Ex: {"verbatim":"GIUGNO","bbox":{"x":0.12,"y":0.28,"width":0.10,"height":0.03}} |
| ocr_payslip_year_details | ?string JSON string with the verbatim printed text and its normalized 0-1 bounding box for the pay-period year. Ex: {"verbatim":"2025","bbox":{"x":0.24,"y":0.28,"width":0.06,"height":0.03}} |
| ocr_payslip_net_details | ?string JSON string with the verbatim printed text and its normalized 0-1 bounding box for the net pay. Ex: {"verbatim":"1.531,40","bbox":{"x":0.60,"y":0.70,"width":0.12,"height":0.03}} |
| ocr_payslip_gross_details | ?string JSON string with the verbatim printed text and its normalized 0-1 bounding box for the total earnings. Ex: {"verbatim":"3.100,30","bbox":{"x":0.60,"y":0.66,"width":0.12,"height":0.03}} |
| ocr_payslip_iban_details | ?string JSON string with the verbatim printed text and its normalized 0-1 bounding box for the IBAN. Ex: {"verbatim":"IT90J0760103400001054051964","bbox":{"x":0.12,"y":0.80,"width":0.40,"height":0.03}} |
| ocr_payslip_match_first_name | ?boolean True when the printed first name matches the hidden X-Ray section; null when not comparable. Ex: true |
| ocr_payslip_match_last_name | ?boolean True when the printed surname matches the hidden X-Ray section; null when not comparable. Ex: true |
| ocr_payslip_match_month | ?boolean True when the printed pay-period month matches the hidden X-Ray section; null when not comparable. Ex: true |
| ocr_payslip_match_year | ?boolean True when the printed pay-period year matches the hidden X-Ray section; null when not comparable. Ex: true |
| ocr_payslip_match_net | ?boolean True when the printed net pay matches the hidden X-Ray section; null when not comparable. Ex: true |
| ocr_payslip_match_gross | ?boolean True when the printed total earnings match the hidden X-Ray section; null when not comparable. Ex: true |
| ocr_payslip_match_iban | ?boolean True when the printed IBAN matches the hidden X-Ray section; null when not comparable. Ex: true |
| ocr_payslip_match_all | ?boolean True when every comparable field matched; null when no field was comparable. Ex: true |
| ocr_payslip_is_complete | ?boolean True when every relevant payslip field was read from the printed page; null when the document is not a payslip. Ex: true |
| ocr_bank_statement_holder_first_name | ?string Account holder first name read from the printed page (bank statements only). Ex: LUCIA |
| ocr_bank_statement_holder_last_name | ?string Account holder surname read from the printed page (bank statements only). Ex: GERVASI |
| ocr_bank_statement_iban | ?string Account IBAN read from the printed page. Ex: IT11E0200883120000300310092 |
| ocr_bank_statement_bank_name | ?string Issuing bank name read from the printed page. Ex: UNICREDIT |
| ocr_bank_statement_period_start | ?string Statement period start date (YYYY-MM-DD) read from the printed page. Ex: 2026-01-01 |
| ocr_bank_statement_period_end | ?string Statement period end date (YYYY-MM-DD) read from the printed page. Ex: 2026-03-31 |
| ocr_bank_statement_opening_balance | ?number float Opening balance read from the printed page. Ex: 1818.27 |
| ocr_bank_statement_closing_balance | ?number float Closing balance read from the printed page. Ex: 1686.18 |
| ocr_bank_statement_holder_first_name_details | ?string JSON string with the verbatim printed text and its normalized 0-1 bounding box for the holder first name. Ex: {"verbatim":"LUCIA","bbox":{"x":0.58,"y":0.21,"width":0.05,"height":0.01}} |
| ocr_bank_statement_holder_last_name_details | ?string JSON string with the verbatim printed text and its normalized 0-1 bounding box for the holder surname. Ex: {"verbatim":"GERVASI","bbox":{"x":0.51,"y":0.21,"width":0.07,"height":0.01}} |
| ocr_bank_statement_iban_details | ?string JSON string with the verbatim printed text and its normalized 0-1 bounding box for the IBAN. Ex: {"verbatim":"IT11 E02008 83120 000300310092","bbox":{"x":0.07,"y":0.15,"width":0.32,"height":0.01}} |
| ocr_bank_statement_bank_name_details | ?string JSON string with the verbatim printed text and its normalized 0-1 bounding box for the bank name. Ex: {"verbatim":"UNICREDIT","bbox":{"x":0.21,"y":0.68,"width":0.40,"height":0.02}} |
| ocr_bank_statement_period_start_details | ?string JSON string with the verbatim printed text and its normalized 0-1 bounding box for the period start date. Ex: {"verbatim":"01.01.2026","bbox":{"x":0.07,"y":0.39,"width":0.08,"height":0.01}} |
| ocr_bank_statement_period_end_details | ?string JSON string with the verbatim printed text and its normalized 0-1 bounding box for the period end date. Ex: {"verbatim":"31.03.2026","bbox":{"x":0.71,"y":0.04,"width":0.14,"height":0.02}} |
| ocr_bank_statement_opening_balance_details | ?string JSON string with the verbatim printed text and its normalized 0-1 bounding box for the opening balance. Ex: {"verbatim":"1.818,27","bbox":{"x":0.11,"y":0.52,"width":0.05,"height":0.01}} |
| ocr_bank_statement_closing_balance_details | ?string JSON string with the verbatim printed text and its normalized 0-1 bounding box for the closing balance. Ex: {"verbatim":"1.686,18","bbox":{"x":0.73,"y":0.52,"width":0.05,"height":0.01}} |
| ocr_bank_statement_is_complete | ?boolean True when every relevant bank-statement field was read from the printed page; null when the document is not a bank statement. Ex: true |
| iban_is_valid | ?boolean True when the IBAN read from the document passes the mod-97 checksum and country structure; false when malformed; null when no IBAN was read. Ex: true |
| iban_country | ?string ISO country code of the resolved IBAN; null when the IBAN is invalid or absent. Ex: IT |
| iban_bank_code | ?string Bank identifier of the resolved IBAN (ABI in Italy); null when unresolved. Ex: 02008 |
| iban_branch_code | ?string Branch identifier of the resolved IBAN (CAB in Italy); null when unresolved. Ex: 83120 |
| iban_bic | ?string BIC/SWIFT derived from the resolved bank code; null when the registry has no entry. Ex: UNCRITMM |
| iban_bank_name | ?string Bank name derived from the resolved bank code; null when the registry has no entry. Ex: UniCredit S.p.A. |
| bank_statement_iban_is_consistent | ?boolean True when the bank printed on the statement matches the bank its IBAN belongs to; false when they disagree (possible tampering); null when not comparable or not a bank statement. Ex: true |
| ocr_bank_statement_bank_tax_id | ?string Tax id / VAT number of the issuing bank as printed on the statement (not the account holder); null when not printed or not a bank statement. Ex: 00348170101 |
| iban_bank_tax_id | ?string JSON string array of the issuing bank tax identifiers (Codice Fiscale, Partita IVA) resolved from the IBAN bank code via a maintained static list; null when the bank is not listed. Ex: ["00348170101"] |
| bank_statement_bank_tax_id_is_consistent | ?boolean True when the bank tax id printed on the statement matches the one its IBAN resolves to; false when they disagree (possible tampering); null when not comparable or not a bank statement. Ex: true |
| overlapped_text | ?boolean True when the document contains overlapping text. Ex: true |
| overlapped_text_count | ?integer Number of overlapping text occurrences in the document. Ex: 1 |
| overlapped_text_details | ?string JSON string: one region per overlapping-text group, each with the layered text values, page, and normalized 0-1 bounding box. Ex: [{"texts":["2.628,30","2.928,34"],"page":1,"bbox":{"x":0.9072,"y":0.7579,"width":0.0523,"height":0.0117}}] |
| mixed_font_token_count | ?integer Number of tokens whose glyphs mix more than one font family. Ex: 1 |
| mixed_font_token_details | ?string JSON string: one region per mixed-font token, each with the verbatim text, the fonts involved, page, and normalized 0-1 bounding box. Ex: [{"text":"14.269,37","fonts":["Cambria,Bold","Courier New,Bold"],"page":2,"bbox":{"x":0.4435,"y":0.575,"width":0.0762,"height":0.011}}] |
| mixed_fonts_is_absent | ?boolean True when no token mixes font families (good); False when a mixed-font token was found. Ex: false |
| overprint_count | ?integer Number of overprinted (text-over-text) regions found on a scanned bank statement. Ex: 1 |
| overprint_details | ?string JSON string: one region per overprint band, each with the page and normalized 0-1 bounding box. Ex: [{"page":1,"bbox":{"x":0.03,"y":0.94,"width":0.94,"height":0.02}}] |
| overprint_is_absent | ?boolean True when no text is printed over other text on a scanned bank statement (good); False when an overprinted (text-over-text) region was found. Ex: false |
| pdf_incremental_update | ?boolean True when the PDF was re-saved after its original creation (an incremental update / appended revision). Ex: false |
| pdf_incremental_update_count | ?integer Number of incremental-update revisions appended to the PDF. Ex: 0 |
| tone_step_score | ?number float Physical-tamper cue (0-100): a region whose paper tone steps brighter than the sheet, suggesting a separate sheet laid on top. Ex: 0 |
| grid_misalignment_score | ?number float Physical-tamper cue (0-100): a region whose printing is rotated relative to the form grid. Ex: 0 |
| grid_misalignment_region | ?string JSON string: page + normalized 0-1 bounding box of the grid-misaligned region, when one fired. Ex: {"page":1,"bbox":{"x":0.4478,"y":0.0904,"width":0.215,"height":0.1175}} |
| print_style_deviation_score | ?number float Physical-tamper cue (0-100, 50 = firing line): a text run whose darkness/sharpness/stroke is a local outlier (foreign print). Ex: 0 |
| print_style_deviation_region | ?string JSON string: page + normalized 0-1 bounding box of the foreign-print region, when one fired. Ex: {"page":1,"bbox":{"x":0.5355,"y":0.1653,"width":0.1355,"height":0.0473}} |
| is_physically_intact | ?boolean False when the document shows physical alteration of photographed/scanned paper (glued patch or foreign-print insertion); null for non-scanned inputs. Ex: true |
| known_format | ?string Matched issuer template name; null when unrecognised or not assessed. Ex: it_noipa_payslip Enum: it_noipa_payslip,it_inps_payslip,it_teamsystem_payslip,it_zucchetti_payslip,it_sistemi_payslip,it_carabinieri_payslip,it_intesa_sanpaolo_bank_statement |
| known_format_is_present | ?boolean True/False once a native PDF is assessed for a known template; null when not assessed (e.g. image PDF below the text threshold). Ex: true |
| known_format_is_consistent | ?boolean True when the matched template is structurally consistent with the genuine one; false when it diverges (possible tampering); null when no format matched. Ex: true |
| embedded_fonts | string JSON string: sorted distinct font family names embedded in the document; null when not assessed. Ex: ["ArialBoldMT","ArialMT"] |
| non_embedded_fonts | string JSON string: sorted distinct font family names referenced but not embedded in the document; null when not assessed. Ex: ["TimesNewRomanPSMT"] |
| rendered_fonts | string JSON string: sorted distinct font family names actually used to render the document text; null when not assessed. Ex: ["ArialMT"] |
| embedded_fonts_are_absent | ?boolean True when the document has no embedded fonts; null when not assessed. Ex: false |