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