openpaperwork / pyinsane

Python library to access and use image scanners (Linux/Windows/etc) (Sane/WIA) -- Moved to Gnome's Gitlab
https://gitlab.gnome.org/World/OpenPaperwork/pyinsane
63 stars 24 forks source link

Two side paper scanning #21

Open fandomas opened 9 years ago

fandomas commented 9 years ago

Does support scanners (probably an ADF type) for simultaneous two-sided scanning? Great project btw!

Thanks.

jflesch commented 9 years ago

I don't have a scanner with two-sided scanning, so actually I cannot say. Try and tell me :)

fandomas commented 9 years ago

i will let you know. Great project! Thank you very much. pyinsane works wonderful with Canon PIXMA MP210.

fandomas commented 9 years ago

Unfortunately i can't find any way of scanning of both sides simultaneously even though the scanner support that. Its a wonderful API though. If anyone find a way of two-sided scanning please inform us here. thanks.

jflesch commented 9 years ago

Just so I know, is there already others scanning software on Linux able to support two-sided scanning ?

jflesch commented 9 years ago

Also, can you run the scripts example/list_all.py ? It will list all the options of all the scanner. Maybe the solution is here.

russss commented 8 years ago

It works fine for me with duplex, and has for quite a while. I think the exact configuration is device-dependent, but for me:

scanner.options['source'].value = "ADF Duplex"
jflesch commented 8 years ago

Unfortunately, I don't have the required hardware to test it myself. Also, @fandomas didn't report the output of example/list_all.py, so I can't even try to guess what must be done (if anything). So I will close this ticket for now. @fandomas > Please reopen if the solution indicated by @russss doesn't work for you.

yuyudhan commented 6 years ago

Hi @jflesch

Following is the list_all.py output for me, the option "ADF Duplex" isn't working for me. Check out the bold option below which I see.

Option: source Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: ['0000\Root\Feeder'] Value: 0000\Root\Feeder

Have tried the three options here, but won't scan both the sides of page.

The scanner model is HP Scanjet Pro 3000 S3

properties = _rawapi.get_properties(dev_or_src) Pyinsane: WARNING: A property has a type different from the one expected C:\Python34\lib\site-packages\pyinsane2-2.0.10-py3.4-win-amd64.egg\pyinsane2\wia\rawapi.py:116: RuntimeWarning: Pyinsane: WARNING: Got unknown clsid from driver constraints = _rawapi.get_constraints(dev_or_src) Pyinsane: WARNING: Got unknown clsid from driver Pyinsane: Failed to parse constraint of [item_category] Constraint found on property [sti_driver_version] but property not found C:\Python34\lib\site-packages\pyinsane2-2.0.10-py3.4-win-amd64.egg\pyinsane2\wia\rawapi.py:116: RuntimeWarning: Pyinsane: WARNING: Unknown var type for constraint constraints = _rawapi.get_constraints(dev_or_src) Pyinsane: WARNING: Unknown var type for constraint Pyinsane: WARNING: Got unknown clsid from driver Pyinsane: Failed to parse constraint of [item_category] Pyinsane: WARNING: Got unknown clsid from driver Pyinsane: Failed to parse constraint of [preferred_format] Pyinsane: WARNING: A property has a type different from the one expected Pyinsane: WARNING: Got unknown clsid from driver Pyinsane: Failed to parse constraint of [item_category] Constraint found on property [sti_driver_version] but property not found Pyinsane: WARNING: Unknown var type for constraint Pyinsane: WARNING: Got unknown clsid from driver Pyinsane: Failed to parse constraint of [item_category] Pyinsane: WARNING: Got unknown clsid from driver Pyinsane: Failed to parse constraint of [preferred_format] Option 'current_intent' preset to 'image_type_color,maximize_quality' on ['HP ScanJet Pro 3000 s3 (USB)' (HP, HP ScanJet Pro 3000 s3 (USB), digital_camera,streaming_video)] Pyinsane: WARNING: A property has a type different from the one expected Pyinsane: WARNING: Got unknown clsid from driver Pyinsane: Failed to parse constraint of [item_category] Constraint found on property [sti_driver_version] but property not found Pyinsane: WARNING: Unknown var type for constraint Pyinsane: WARNING: Got unknown clsid from driver Pyinsane: Failed to parse constraint of [item_category] Pyinsane: WARNING: Got unknown clsid from driver Pyinsane: Failed to parse constraint of [preferred_format] Option 'format' preset to 'bmp' on ['HP ScanJet Pro 3000 s3 (USB)' (HP, HP ScanJet Pro 3000 s3 (USB), digital_camera,streaming_video)] Failed to pre-set option 'preferred_format' on ['HP ScanJet Pro 3000 s3 (USB)' (HP, HP ScanJet Pro 3000 s3 (USB), digital_camera,streaming_video)] C:\Python34\lib\site-packages\pyinsane2-2.0.10-py3.4-win-amd64.egg\pyinsane2\wia\rawapi.py:127: RuntimeWarning: Pyinsane: WARNING: properties->WriteMultiple() failed ret = _rawapi.set_property(dev_or_src, propname, propvalue) Pyinsane: WARNING: properties->WriteMultiple() failed Pyinsane: WARNING: properties->WriteMultiple() failed: page_size : 0x80070057 Exception while setting page_size: WIA: Failed to set scanner properties WIA: Failed to set scanner properties Traceback (most recent call last): File "C:\Python34\lib\site-packages\pyinsane2-2.0.10-py3.4-win-amd64.egg\pyinsane2\wia\abstract.py", line 186, in _set_value rawapi.set_property(obj, self.name, new_value) File "C:\Python34\lib\site-packages\pyinsane2-2.0.10-py3.4-win-amd64.egg\pyinsane2\wia\rawapi.py", line 134, in set_property propname=propname, propvalue=propvalue).wait() File "C:\Python34\lib\site-packages\pyinsane2-2.0.10-py3.4-win-amd64.egg\pyinsane2\wia\rawapi.py", line 34, in wait raise self.exception File "C:\Python34\lib\site-packages\pyinsane2-2.0.10-py3.4-win-amd64.egg\pyinsane2\wia\rawapi.py", line 39, in do self.result = self.func(self.kwargs) File "C:\Python34\lib\site-packages\pyinsane2-2.0.10-py3.4-win-amd64.egg\pyinsane2\wia\rawapi.py", line 129, in _set_property raise WIAException("Failed to set scanner properties") pyinsane2.wia.rawapi.WIAException: WIA: Failed to set scanner properties Pyinsane: WARNING: A property has a type different from the one expected Pyinsane: WARNING: Got unknown clsid from driver Pyinsane: Failed to parse constraint of [item_category] Constraint found on property [sti_driver_version] but property not found Pyinsane: WARNING: Unknown var type for constraint Pyinsane: WARNING: Got unknown clsid from driver Pyinsane: Failed to parse constraint of [item_category] Pyinsane: WARNING: Got unknown clsid from driver Pyinsane: Failed to parse constraint of [preferred_format] Failed to pre-set option 'page_size' on ['HP ScanJet Pro 3000 s3 (USB)' (HP, HP ScanJet Pro 3000 s3 (USB), digital_camera,streaming_video)] Pyinsane: WARNING: A property has a type different from the one expected Pyinsane: WARNING: Got unknown clsid from driver Pyinsane: Failed to parse constraint of [item_category] Constraint found on property [sti_driver_version] but property not found Pyinsane: WARNING: Unknown var type for constraint Pyinsane: WARNING: Got unknown clsid from driver Pyinsane: Failed to parse constraint of [item_category] Pyinsane: WARNING: Got unknown clsid from driver Pyinsane: Failed to parse constraint of [preferred_format] Option 'depth' preset to '24' on ['HP ScanJet Pro 3000 s3 (USB)' (HP, HP ScanJet Pro 3000 s3 (USB), digital_camera,streaming_video)] C:\Python34\lib\site-packages\pyinsane2-2.0.10-py3.4-win-amd64.egg\pyinsane2\wia\rawapi.py:72: RuntimeWarning: Pyinsane: WARNING: WiaDevMgr->CreateDevice() failed out = _rawapi.open(devid) Pyinsane: WARNING: WiaDevMgr->CreateDevice() failed Failed to access scanner ('{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0001', 'HP ScanJet Flow 5000 s4 (USB)') : WIA: Failed to open {6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0001 WIA: Failed to open {6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0001 Traceback (most recent call last): File "C:\Python34\lib\site-packages\pyinsane2-2.0.10-py3.4-win-amd64.egg\pyinsane2\wia\abstract.py", line 567, in get_devices scanner = Scanner(dev[0]) File "C:\Python34\lib\site-packages\pyinsane2-2.0.10-py3.4-win-amd64.egg\pyinsane2\wia\abstract.py", line 413, in init self._dev = rawapi.open(name) File "C:\Python34\lib\site-packages\pyinsane2-2.0.10-py3.4-win-amd64.egg\pyinsane2\wia\rawapi.py", line 79, in open return WiaAction(_open, devid=devid).wait() File "C:\Python34\lib\site-packages\pyinsane2-2.0.10-py3.4-win-amd64.egg\pyinsane2\wia\rawapi.py", line 34, in wait raise self.exception File "C:\Python34\lib\site-packages\pyinsane2-2.0.10-py3.4-win-amd64.egg\pyinsane2\wia\rawapi.py", line 39, in do self.result = self.func(self.kwargs) File "C:\Python34\lib\site-packages\pyinsane2-2.0.10-py3.4-win-amd64.egg\pyinsane2\wia\rawapi.py", line 74, in _open raise WIAException("Failed to open {}".format(devid)) pyinsane2.wia.rawapi.WIAException: WIA: Failed to open {6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0001 'HP ScanJet Pro 3000 s3 (USB)' (HP, HP ScanJet Pro 3000 s3 (USB), digital_camera,streaming_video) Option: yextent Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: (32, 36600) Value: 36600 Option: optical_xres Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: 600 Option: preview Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: [0, 0, 1] Value: final_scan Option: port_name Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: \.\Usbscan0 Option: compression Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: [0, 0, 2, 5] Value: none Option: tl-x Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: (0, 2550) Value: 0 Option: min_vertical_size Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: 107 Option: sti_gen_capabilities Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: 49 Option: mode Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: ['Color', 'Gray', 'BW'] Value: Color Option: hw_config Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: ['generic', 'scsi', 'usb', 'serial', 'parallel'] Value: 0 Option: access_rights Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: ['read', 'write', 'can_be_deleted', 'read_can_be_deleted', 'read_write_can_be_deleted'] Value: read,write,read_can_be_deleted,read_write_can_be_deleted Option: full_item_name Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: 0000\Root\Feeder Option: xres Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: [8, 75, 150, 200, 200, 240, 300, 400, 500, 600] Value: 300 Option: bytes_per_line Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: 7652 Option: item_name Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: Feeder Option: format Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: ['bmp', 'ciff', 'exif', 'flashpix', 'gif', 'ico', 'jbig', 'jpeg', 'jpeg2k', 'jpeg2kx', 'memorybmp', 'pdfa', 'photocd', 'pict', 'png', 'raw', 'rawrgb', 'tiff'] Value: bmp Option: threshold Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: (0, 128) Value: 128 Option: dev_id Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: {6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0000 Option: filename_extension Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: bmp Option: source Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: ['0000\Root\Feeder'] Value: 0000\Root\Feeder Option: photometric_interp Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: [0, 0, 1] Value: white_1 Option: contrast Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: (-1000, 0) Value: 0 Option: number_of_lines Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: 36600 Option: preferred_format Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: ['bmp', 'ciff', 'exif', 'flashpix', 'gif', 'ico', 'jbig', 'jpeg', 'jpeg2k', 'jpeg2kx', 'memorybmp', 'pdfa', 'photocd', 'pict', 'png', 'raw', 'rawrgb', 'tiff'] Value: bmp Option: optical_yres Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: 600 Option: document_handling_select Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: [32, 36] Value: front_only Option: max_vertical_size Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: 122000 Option: pages Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: (0, 1) Value: 1 Option: pixels_per_line Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: 2550 Option: document_handling_status Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: ['feed_ready', 'flat_ready', 'dup_ready', 'flat_cover_up', 'path_cover_up', 'paper_jam', 'film_tpa_ready', 'storage_ready', 'storage_full', 'multiple_feed', 'device_attention', 'lamp_err'] Value: 0 Option: user_name Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: DESKTOP-L060A5J\Ankur Pandey Value: DESKTOP-L060A5J\Ankur Pandey Option: planar Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: pixel Value: pixel Option: pnp_id Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: \?\usb#vid_03f0&pid_5605&mi_00#6&3324a881&0&0000#{6bdd1fc6-810f-11d0-bec7-08002be2092f} Option: yres Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: [8, 75, 150, 200, 200, 240, 300, 400, 500, 600] Value: 300 Option: resolution Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: [8, 75, 150, 200, 200, 240, 300, 400, 500, 600] Value: 300 Option: ui_clsid Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: {4DB1AD10-3391-11D2-9A33-00C04FA36145} Option: item_category Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: ['root', 'flatbed', 'feeder', 'feeder_front', 'feeder_back', 'film', 'folder', 'finished_file'] Value: feeder Option: brightness Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: (-1000, 0) Value: 0 Option: driver_version Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: 41.0.680.26008 Option: buffer_size Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: 262144 Option: br-y Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: (0, 36600) Value: 36600 Option: tl-y Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: (0, 36600) Value: 0 Option: xpos Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: (0, 0) Value: 0 Option: wia_version Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: 2.0 Option: vend_desc Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: HP Option: sheet_feeder_registration Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: left_justified Value: centered Option: dev_name Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: HP ScanJet Pro 3000 s3 (USB) Option: page_height Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: 122000 Option: item_size Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: 0 Option: item_flags Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: free Value: file,image,programmable_data_source,transfer Option: page_width Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: 8500 Option: current_intent Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: [0, 196615] Value: image_type_color,image_type_mask,maximize_quality,size_mask Option: dev_type Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: default Value: digital_camera,streaming_video Option: xextent Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: (32, 2550) Value: 2550 Option: firmware_version Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: 1.0.na Option: server_name Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: local Option: tymed Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: [1, 2, 2] Value: file Option: datatype Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: [0, 2, 3, 3, 3] Value: color Option: max_horizontal_size Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: 8500 Option: orientation Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: [0, 0, 1] Value: portrait Option: min_horizontal_size Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: 107 Option: bits_per_channel Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: 8 Option: document_handling_capabilities Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: ['auto_source', 'dup', 'detect_film_tpa', 'detect_stor', 'film_tpa', 'stor', 'detect_feed', 'detect_flat', 'detect_scan', 'dup', 'feed', 'flat', 'detect_dup', 'detect_dup_avail', 'detect_feed_avail'] Value: dup,feed Option: page_size Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: [1, 2, 2] Value: custom Option: ypos Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: (0, 0) Value: 0 Option: icm_profile_name Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: ['', 'sRGB Color Space Profile.icm', 'sRGB Color Space Profile.icm'] Value: sRGB Color Space Profile.icm Option: depth Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: [1, 3, 8, 24, 24] Value: 24 Option: baudrate Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: Option: br-x Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: rw Constraint type: None Constraint: (0, 2550) Value: 2550 Option: channels_per_pixel Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: 3 Option: remote_dev_id Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: Option: dev_desc Title: Desc: Type: None Unit: None Size: 4 Capabilities: Access: ro Constraint type: None Constraint: None Value: HP ScanJet Pro 3000 s3 (USB)

jflesch commented 6 years ago

@yuyudhan the thing is, you're using Windows, while @russss is using Linux.

@yuyudhan : when you say "the option "ADF Duplex" isn't working for me.", you mean it doesn't scan at all, it scans only the recto side of pages, or something else ?

russss commented 6 years ago

I'm actually using a Mac but I'd guess the option depends more on the driver than on the OS. My scanner is a Fujitsu.

Looks like 0000\Root\Feeder is one option and the only one it's presenting though?

Can you run sane's scanimage tool from the command line? Mine lists the options when I call scanimage --help:

Options specific to device `epjitsu:libusb:001:015-04c5-11ed-ff-ff':
  Scan Mode:
    --source ADF Front|ADF Back|ADF Duplex [ADF Front]
        Selects the scan source (such as a document-feeder).

For completeness, this is what list_all.py gives me for the source option:

  Option: source
    Title: Scan source
    Desc: Selects the scan source (such as a document-feeder).
    Type: <class 'pyinsane.rawapi.SaneValueType'> : String (3)
    Unit: <class 'pyinsane.rawapi.SaneUnit'> : None (0)
    Size: 11
    Capabilities: <class 'pyinsane.rawapi.SaneCapabilities'> :[ Soft_select, Soft_detect,]
    Constraint type: <class 'pyinsane.rawapi.SaneConstraintType'> : String list (3)
    Constraint: ['ADF Front', 'ADF Back', 'ADF Duplex']
    Value: ADF Front
jflesch commented 6 years ago

0000\Root\Feeder is clearly a WIA source (Windows), not a Sane one (Linux, MacOSX, BSD, etc), so he doesn't have scanimage. I have this feeling that duplex support will be quite different between WIA and Sane .. :/

russss commented 6 years ago

Ah. I've got nothing then. But my suspicion is that the "ADF Duplex" thing is specific to the epjitsu SANE driver.

jflesch commented 6 years ago

Quite possible. I believe that some other sane drivers have another extra option instead of extra values for source. I'll check later. I'll also have to look at the WIA examples to figure out how it's supposed to work on Windows.

Anyway, I think duplex support will wait for the new library (I'm going to replace pyinsane by a brand new and shiny C library).