GET /api/v1/scannerdb/scan_reports/122/
HTTP 200 OK
Allow: GET, PUT, PATCH, DELETE, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "admin_comment": null,
    "attachments": [
        "https://www.openpaper.work/api/v1/scannerdb/scan_report_attachments/172/",
        "https://www.openpaper.work/api/v1/scannerdb/scan_report_attachments/173/",
        "https://www.openpaper.work/api/v1/scannerdb/scan_report_attachments/2668/",
        "https://www.openpaper.work/api/v1/scannerdb/scan_report_attachments/2669/"
    ],
    "creation_date": "2018-04-12T17:34:31.374000Z",
    "id": 122,
    "last_update": "2020-12-30T16:37:46.248344Z",
    "locale": null,
    "moderated": true,
    "os": "linux",
    "scan_library": "pyinsane2 2.0.12-19-gc251345",
    "scan_program": "ironscanner 1.1.0-16-g2905402",
    "scan_source": "ADF Duplex",
    "scanner": "https://www.openpaper.work/api/v1/scannerdb/scanners/63/",
    "scanner_type": "other",
    "sealed": true,
    "successful": true,
    "url": "https://www.openpaper.work/api/v1/scannerdb/scan_reports/122/",
    "user_url": "https://www.openpaper.work/scannerdb/report/122/",
    "data": {
        "user": {
            "comment": "Image appeared to scan correctly, but scanner did not detect end of page and continued scanning to logical limit, resulting in long blank tail on the image.",
            "name": "Richard Elliott"
        },
        "system": {
            "versions": {
                "scan_library": "pyinsane2 2.0.12-19-gc251345",
                "pillow": "5.1.0",
                "test_program": "ironscanner 1.1.0-16-g2905402"
            },
            "sys_system": "Linux",
            "sys_release": "4.4.0-119-generic",
            "sys_swap": 19999485952,
            "sys_cpu_freq": 2333,
            "sys_platform_short": "linux",
            "sys_os_uname": "['Linux', 'newcastle-u', '4.4.0-119-generic', '#143-Ubuntu SMP Mon Apr 2 16:08:24 UTC 2018', 'x86_64']",
            "sys_arch": "['64bit', 'ELF']",
            "sys_platform_uname": "['Linux', 'newcastle-u', '4.4.0-119-generic', '#143-Ubuntu SMP Mon Apr 2 16:08:24 UTC 2018', 'x86_64', 'x86_64']",
            "sys_proc": "x86_64",
            "sys_mem": 6173020160,
            "sys_type": "posix",
            "sys_python": "3.5.3 (default, Jan 19 2017, 14:11:04) \n[GCC 6.3.0 20170118]",
            "sys_platform_detailed": "Linux-4.4.0-119-generic-x86_64-with-Ubuntu-16.04-xenial",
            "sys_machine": "x86_64",
            "sys_nb_cpus": 2
        },
        "scanner": {
            "options": {
                "contrast": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Controls the contrast of the acquired image.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Contrast",
                    "size": "4",
                    "constraint": "(-127, 127, 1)",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Integer (1)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect,]"
                },
                "prepick": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : String list (3)",
                    "desc": "Request scanner to grab next page from ADF",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Prepick",
                    "size": "8",
                    "constraint": "['Default', 'Off', 'On']",
                    "initial_value": "Default",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : String (3)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect, Advanced,]"
                },
                "mode": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : String list (3)",
                    "desc": "Selects the scan mode (e.g., lineart, monochrome, or color).",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Scan mode",
                    "size": "8",
                    "constraint": "['Lineart', 'Gray', 'Color']",
                    "initial_value": "Color",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : String (3)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect,]"
                },
                "swdespeck": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Maximum diameter of lone dots to remove from scan.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Software despeckle diameter",
                    "size": "4",
                    "constraint": "(0, 9, 1)",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Integer (1)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect,]"
                },
                "awd": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Scanner detects paper sides. May reduce scanning speed.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Auto width detection",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "df-diff": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : String list (3)",
                    "desc": "Difference in page length to trigger double feed error",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "DF length difference",
                    "size": "8",
                    "constraint": "['Default', '10mm', '15mm', '20mm']",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : String (3)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect, Inactive, Advanced,]"
                },
                "endorser": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Enable endorser unit",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Endorser",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "endorser-font": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : String list (3)",
                    "desc": "Endorser printing font.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Endorser font",
                    "size": "18",
                    "constraint": "['Horizontal', 'Horizontal bold', 'Horizontal narrow', 'Vertical', 'Vertical bold']",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : String (3)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "matrix-4x4": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Remove 4 pixel square noise",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Matrix 4x4",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "lowmemory": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Limit driver memory usage for use in embedded systems. Causes some duplex transfers to alternate sides on each call to sane_read. Value of option 'side' can be used to determine correct image. This option should only be used with custom front-end software.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Low Memory",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect, Advanced,]"
                },
                "smoothing": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Enable smoothing for improved OCR",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Smoothing",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "double-feed": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Double feed detected",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Double feed",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Hard_select, Soft_detect, Advanced,]"
                },
                "sleeptimer": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Time in minutes until the internal power supply switches to sleep mode",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Sleep timer",
                    "size": "4",
                    "constraint": "(0, 60, 1)",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Integer (1)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect, Advanced,]"
                },
                "buffermode": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : String list (3)",
                    "desc": "Request scanner to read pages quickly from ADF into internal memory",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Buffer mode",
                    "size": "8",
                    "constraint": "['Default', 'Off', 'On']",
                    "initial_value": "Off",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : String (3)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect, Advanced,]"
                },
                "tl-y": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Top-left y position of scan area.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : Mm (3)",
                    "title": "Top-left y",
                    "size": "4",
                    "constraint": "(0, 57455088, 1387)",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Fixed (2)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect,]"
                },
                "a4-paper": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "A4 paper detected",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "A4 paper",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Hard_select, Soft_detect, Advanced,]"
                },
                "swdeskew": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Request driver to rotate skewed pages digitally.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Software deskew",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect, Advanced,]"
                },
                "page-height": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Specifies the height of the media.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : Mm (3)",
                    "title": "Page height",
                    "size": "4",
                    "constraint": "(0, 57455088, 1387)",
                    "initial_value": "57455088",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Fixed (2)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect,]"
                },
                "wl-follow": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : String list (3)",
                    "desc": "Control white level follower",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "White level follower",
                    "size": "8",
                    "constraint": "['Default', 'On', 'Off']",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : String (3)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "adv-paper-protect": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : String list (3)",
                    "desc": "Request scanner to predict jams in the ADF using improved sensors",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Advanced paper protection",
                    "size": "8",
                    "constraint": "['Default', 'Off', 'On']",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : String (3)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "brightness": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Controls the brightness of the acquired image.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Brightness",
                    "size": "4",
                    "constraint": "(-127, 127, 1)",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Integer (1)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect,]"
                },
                "offtimer": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Time in minutes until the internal power supply switches the scanner off. Will be rounded to nearest 15 minutes. Zero means never power off.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Off timer",
                    "size": "4",
                    "constraint": "(0, 960, 1)",
                    "initial_value": "240",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Integer (1)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect, Advanced,]"
                },
                "ink-low": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Imprinter ink running low",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Ink low",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "br-x": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Bottom-right x position of scan area.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : Mm (3)",
                    "title": "Bottom-right x",
                    "size": "4",
                    "constraint": "(0, 14491376, 1387)",
                    "initial_value": "14491376",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Fixed (2)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect,]"
                },
                "swskip": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Request driver to discard pages with low percentage of dark pixels",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : Percent (5)",
                    "title": "Software blank skip percentage",
                    "size": "4",
                    "constraint": "(0, 6553600, 6554)",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Fixed (2)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect,]"
                },
                "ht-pattern": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Control pattern of halftone filter",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Halftone pattern",
                    "size": "4",
                    "constraint": "(0, 3, 1)",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Integer (1)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect, Inactive,]"
                },
                "gamma": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Changes intensity of midtones",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Gamma function exponent",
                    "size": "4",
                    "constraint": "(19660, 327680, 655)",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Fixed (2)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "staple-detect": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : String list (3)",
                    "desc": "Request scanner to detect jams in the ADF caused by staples",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Staple detection",
                    "size": "8",
                    "constraint": "['Default', 'Off', 'On']",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : String (3)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "a3-paper": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "A3 paper detected",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "A3 paper",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Hard_select, Soft_detect, Advanced,]"
                },
                "df-length": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Enable double feed error due to paper length",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "DF length",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect, Inactive, Advanced,]"
                },
                "variance": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Set SDTC variance rate (sensitivity), 0 equals 127",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Variance",
                    "size": "4",
                    "constraint": "(0, 255, 1)",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Integer (1)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect,]"
                },
                "paper-protect": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : String list (3)",
                    "desc": "Request scanner to predict jams in the ADF",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Paper protection",
                    "size": "8",
                    "constraint": "['Default', 'Off', 'On']",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : String (3)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "ink-remain": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Imprinter ink level",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Ink remaining",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Integer (1)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "endorser-bits": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Determines maximum endorser counter value.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Endorser bits",
                    "size": "4",
                    "constraint": "(16, 24, 8)",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Integer (1)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "threshold": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Select minimum-brightness to get a white point",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Threshold",
                    "size": "4",
                    "constraint": "(0, 255, 1)",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Integer (1)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect, Inactive,]"
                },
                "br-y": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Bottom-right y position of scan area.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : Mm (3)",
                    "title": "Bottom-right y",
                    "size": "4",
                    "constraint": "(0, 57455088, 1387)",
                    "initial_value": "57455088",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Fixed (2)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect,]"
                },
                "tl-x": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Top-left x position of scan area.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : Mm (3)",
                    "title": "Top-left x",
                    "size": "4",
                    "constraint": "(0, 14491376, 1387)",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Fixed (2)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect,]"
                },
                "gamma-curve": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Gamma curve, from light to dark, but upper two may not work",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Gamma curve",
                    "size": "4",
                    "constraint": "(0, 3, 1)",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Integer (1)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "matrix-2x2": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Remove 2 pixel square noise",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Matrix 2x2",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "bgcolor": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : String list (3)",
                    "desc": "Set color of background for scans. May conflict with overscan option",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Background color",
                    "size": "8",
                    "constraint": "['Default', 'White', 'Black']",
                    "initial_value": "Default",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : String (3)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect, Advanced,]"
                },
                "ipc-mode": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : String list (3)",
                    "desc": "Image processing mode, enables additional options",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "IPC mode",
                    "size": "8",
                    "constraint": "['Default', 'SDTC']",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : String (3)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "compression-arg": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) is same as 4",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Compression argument",
                    "size": "4",
                    "constraint": "(0, 7, 1)",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Integer (1)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect, Inactive,]"
                },
                "density": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Density dial",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Density",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Integer (1)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "rif": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Reverse image format",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "RIF",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect,]"
                },
                "threshold-white": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Set pixels equal to threshold to white instead of black",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Threshold white",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "power-save": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Scanner in power saving mode",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Power saving",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Hard_select, Soft_detect, Advanced,]"
                },
                "source": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : String list (3)",
                    "desc": "Selects the scan source (such as a document-feeder).",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Scan source",
                    "size": "11",
                    "constraint": "['ADF Front', 'ADF Back', 'ADF Duplex']",
                    "initial_value": "ADF Front",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : String (3)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect,]"
                },
                "endorser-options": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Controls for endorser unit",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Endorser Options",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "df-skew": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Enable double feed error due to skew",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "DF skew",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect, Inactive, Advanced,]"
                },
                "separation": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Enable automatic separation of image and text",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Separation",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "endorser-side": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : String list (3)",
                    "desc": "Endorser printing side, requires hardware support to change",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Endorser side",
                    "size": "6",
                    "constraint": "['Front', 'Back']",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : String (3)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "duplexoffset": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Adjust front/back offset",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Duplex offset",
                    "size": "4",
                    "constraint": "(-16, 16, 1)",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Integer (1)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "b4-paper": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "B4 paper detected",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "B4 paper",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Hard_select, Soft_detect, Advanced,]"
                },
                "endorser-val": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Initial endorser counter value.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Endorser value",
                    "size": "4",
                    "constraint": "(0, 65535, 1)",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Integer (1)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "error-code": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Hardware error code",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Error code",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Integer (1)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Hard_select, Soft_detect, Advanced,]"
                },
                "noise-removal": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Noise removal",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Noise removal",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "mirroring": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Reflect output image horizontally",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Mirroring",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "swcrop": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Request driver to remove border from pages digitally.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Software crop",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect, Advanced,]"
                },
                "compression": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : String list (3)",
                    "desc": "Enable compressed data. May crash your front-end program",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Compression",
                    "size": "5",
                    "constraint": "['None']",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : String (3)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "matrix-5x5": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Remove 5 pixel square noise",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Matrix 5x5",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "df-thickness": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Enable double feed error due to paper thickness",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "DF thickness",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect, Inactive, Advanced,]"
                },
                "email": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Email button",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Email button",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Hard_select, Soft_detect, Advanced,]"
                },
                "df-action": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : String list (3)",
                    "desc": "Action following double feed error",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "DF action",
                    "size": "9",
                    "constraint": "['Default', 'Continue', 'Stop']",
                    "initial_value": "Default",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : String (3)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect, Advanced,]"
                },
                "endorser-step": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Change endorser counter value by this much for each page.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Endorser step",
                    "size": "4",
                    "constraint": "(-2, 2, 1)",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Integer (1)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "emphasis": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Negative to smooth or positive to sharpen image",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Emphasis",
                    "size": "4",
                    "constraint": "(-128, 127, 1)",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Integer (1)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect,]"
                },
                "cover-open": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Cover open",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Cover open",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Hard_select, Soft_detect, Advanced,]"
                },
                "df-recovery": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : String list (3)",
                    "desc": "Request scanner to reverse feed on paper jam",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "DF recovery mode",
                    "size": "8",
                    "constraint": "['Default', 'Off', 'On']",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : String (3)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "duplex": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Duplex switch",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Duplex switch",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "page-loaded": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Page loaded",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Page loaded",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "1",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Hard_select, Soft_detect, Advanced,]"
                },
                "bp-filter": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Improves quality of high resolution ball-point pen text",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "BP filter",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "manual-feed": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Manual feed selected",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Manual feed",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Hard_select, Soft_detect, Advanced,]"
                },
                "endorser-y": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Endorser print offset from top of paper.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : Mm (3)",
                    "title": "Endorser Y",
                    "size": "4",
                    "constraint": "(0, 57455088, 1387)",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Fixed (2)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "resolution": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Sets the resolution of the scanned image.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : Dpi (4)",
                    "title": "Scan resolution",
                    "size": "4",
                    "constraint": "(50, 600, 1)",
                    "initial_value": "150",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Integer (1)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect,]"
                },
                "side": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Tells which side (0=front, 1=back) of a duplex scan the next call to sane_read will return.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Duplex side",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_detect, Advanced,]"
                },
                "endorser-string": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Endorser alphanumeric print format. %05ud or %08ud at the end will be replaced by counter value.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Endorser string",
                    "size": "1",
                    "constraint": "None",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : String (3)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "outline": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Perform outline extraction",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Outline",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "scan": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Scan button",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Scan button",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Hard_select, Soft_detect, Advanced,]"
                },
                "threshold-curve": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Threshold curve, from light to dark, but upper two may not be linear",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Threshold curve",
                    "size": "4",
                    "constraint": "(0, 7, 1)",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Integer (1)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "greenoffset": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Adjust green/red offset",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Green offset",
                    "size": "4",
                    "constraint": "(-16, 16, 1)",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Integer (1)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "blueoffset": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Adjust blue/red offset",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Blue offset",
                    "size": "4",
                    "constraint": "(-16, 16, 1)",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Integer (1)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "top-edge": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Paper is pulled partly into adf",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Top edge",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Hard_select, Soft_detect, Advanced,]"
                },
                "ht-type": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : String list (3)",
                    "desc": "Control type of halftone filter",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Halftone type",
                    "size": "10",
                    "constraint": "['Default', 'Dither', 'Diffusion']",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : String (3)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect, Inactive,]"
                },
                "dropoutcolor": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : String list (3)",
                    "desc": "One-pass scanners use only one color during gray or binary scanning, useful for colored paper or ink",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Dropout color",
                    "size": "8",
                    "constraint": "['Default', 'Red', 'Green', 'Blue']",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : String (3)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect, Inactive, Advanced,]"
                },
                "endorser-dir": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : String list (3)",
                    "desc": "Endorser printing direction.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Endorser direction",
                    "size": "14",
                    "constraint": "['Top to bottom', 'Bottom to top']",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : String (3)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "hwdeskewcrop": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Request scanner to rotate and crop pages digitally.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Hardware deskew and crop",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "omr-df": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "OMR or double feed detected",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "OMR or DF",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Hard_select, Soft_detect, Advanced,]"
                },
                "matrix-3x3": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Remove 3 pixel square noise",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Matrix 3x3",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "b5-paper": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "B5 paper detected",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "B5 paper",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Hard_select, Soft_detect, Advanced,]"
                },
                "skew-angle": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Requires black background for scanning",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Skew angle",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Integer (1)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Hard_select, Soft_detect, Advanced,]"
                },
                "ald": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Scanner detects paper lower edge. May confuse some frontends.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Auto length detection",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "0",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect, Advanced,]"
                },
                "function": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Function character on screen",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Function",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "1",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Integer (1)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Hard_select, Soft_detect, Advanced,]"
                },
                "page-width": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : Range (1)",
                    "desc": "Specifies the width of the media.  Required for automatic centering of sheet-fed scans.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : Mm (3)",
                    "title": "Page width",
                    "size": "4",
                    "constraint": "(0, 14491376, 1387)",
                    "initial_value": "14491376",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Fixed (2)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect,]"
                },
                "halt-on-cancel": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : None (0)",
                    "desc": "Request driver to halt the paper feed instead of eject during a cancel.",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Halt on Cancel",
                    "size": "4",
                    "constraint": "None",
                    "initial_value": "(Exception: <class 'pyinsane2.sane.rawapi.SaneStatus'> : Data is invalid (4))",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : Boolean (0)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Inactive,]"
                },
                "overscan": {
                    "contrainttype": "<class 'pyinsane2.sane.rawapi.SaneConstraintType'> : String list (3)",
                    "desc": "Collect a few mm of background on top side of scan, before paper enters ADF, and increase maximum scan area beyond paper size, to allow collection on remaining sides. May conflict with bgcolor option",
                    "unit": "<class 'pyinsane2.sane.rawapi.SaneUnit'> : None (0)",
                    "title": "Overscan",
                    "size": "8",
                    "constraint": "['Default', 'Off', 'On']",
                    "initial_value": "Default",
                    "type": "<class 'pyinsane2.sane.rawapi.SaneValueType'> : String (3)",
                    "capabilities": "<class 'pyinsane2.sane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect, Advanced,]"
                }
            },
            "model": "ScanSnap iX500",
            "devid": "fujitsu:ScanSnap iX500:45903",
            "nicename": "fujitsu:ScanSnap iX500:45903",
            "vendor": "FUJITSU",
            "type": "other",
            "fullname": "FUJITSU ScanSnap iX500 (fujitsu:ScanSnap iX500:45903)"
        },
        "scantest": {
            "successful": 1,
            "config": {
                "source": "ADF Duplex",
                "mode": "Color",
                "resolution": 150
            }
        },
        "software": {
            "scan_library": "pyinsane2 2.0.12-19-gc251345",
            "test_program": "ironscanner 1.1.0-16-g2905402",
            "operating_system": "linux"
        }
    }
}