{"id":35,"date":"2003-05-01T12:35:55","date_gmt":"2003-05-01T12:35:55","guid":{"rendered":"https:\/\/hostadm.lithium.selfhost.de\/?p=35"},"modified":"2020-09-09T20:04:13","modified_gmt":"2020-09-09T20:04:13","slug":"scanner-anbindung-mit-activex-control","status":"publish","type":"post","link":"https:\/\/martin-seewaldt.de\/?p=35","title":{"rendered":"Scanner-Anbindung mit ActiveX-Control"},"content":{"rendered":"<p><b><\/b><b>Jetzt m\u00f6chte ich eine Anwendung, die ich als Freelancer erstellt habe, vorstellen.<\/b><br \/>\n<b>Gestelltes Problem<\/b><br \/>\nEine Tochter eines grossen, deutschen Luftfahrtkonzerns brauchte zur Kl\u00e4rung von Sonderf\u00e4llen bei der Ticketabrechnung eine Anwendung, mit der mehrere Flugtickets mit einem an den PC des Bearbeiters angeschlossenen Scanner aus einer ABAP-Anwendung heraus eingescannt und per FTP in das dortige Image-Archiv \u00fcbertragen werden k\u00f6nnen.<\/p>\n<p><b>Algorithmus<\/b><br \/>\nDa es sich um manuelle Einzelscans handelte, kam die TWAIN-Schnittstelle zum Einsatz. Damit die Anwendung aus SAP heraus gesteuert werden konnte, musste sie in Form eines ActiveX-Controls realisiert werden. Der Scanvorgang per TWAIN geschieht normalerweise in zwei Schritten, es wird zun\u00e4chst ein Preview in niedriger Aufl\u00f6sung gemacht, dann wird vom mitgelieferten, scannerspezifischen TWAIN-GUI (Graphical User Interface) in der gescannten Seite eine Suche nach den zu scannenden Objekten durchgef\u00fchrt, wobei der Anwender noch eine Korrekturm\u00f6glichkeit hat. Erst danach wird dann der finale Scan durchgef\u00fchrt.<br \/>\nDieses Verfahren erschien mir aus den folgenden Gr\u00fcnden nicht praktikabel:<br \/>\na) verschiedene Scanner-Modelle w\u00fcrden unterschiedliche GUIs haben, womit sich eine uneinheitliche Benutzerf\u00fchrung erg\u00e4be<br \/>\nb) durch das doppelte Scannen, zusammen mit der mittendrin notwendigen Benutzerinteraktion w\u00fcrde zuviel Zeit verbraucht werden.<br \/>\nDeshalb entschloss ich mich, jeweils eine DIN A4-Seite komplett einzuscannen und die Tickets in der eingescannten Seite selbst zu lokalisieren. Es wurde ein Kontrasterkennungsalgorithmus implementiert, der eine gescannte Seite auf &#8220;Kanten&#8221; untersuchte. Die gefundenen Tickets wurden dann dem Anwender dargestellt und mit einer Markierung zur Durchf\u00fchrung eventueller Korrekturen (die aber im Praxisbetrieb selten notwendig sind) versehen. Die Scanzeit f\u00fcr drei Tickets inklusive Bereichssuche liegt mit einem aktuellen HP-Scanner bei vorgew\u00e4rmter Lampe bei 11 Sekunden.<\/p>\n<p><b>Screenshot:<\/b><br \/>\n<img decoding=\"async\" src=\"https:\/\/martin-seewaldt.de\/Programme\/SiraxScan.jpg\" width=\"800\" \/><br \/>\n(Noch eine Anmerkung zu den etwas blassen Farben. Erstens hat man mir zum Testen einen alten Schrottscanner auf den Schreibtisch gestellt und zweitens werden die extrahierten Images vor dem Speichern selbstredend noch kontrastoptimier<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jetzt m\u00f6chte ich eine Anwendung, die ich als Freelancer erstellt habe, vorstellen. Gestelltes Problem Eine Tochter eines grossen, deutschen Luftfahrtkonzerns brauchte zur Kl\u00e4rung von Sonderf\u00e4llen bei der Ticketabrechnung eine Anwendung, mit der mehrere Flugtickets mit einem an den PC des Bearbeiters angeschlossenen Scanner aus einer ABAP-Anwendung heraus eingescannt und per FTP in das dortige Image-Archiv [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3],"tags":[],"class_list":["post-35","post","type-post","status-publish","format-standard","hentry","category-programme_apps"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Scanner-Anbindung mit ActiveX-Control - Martin Seewaldt<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/martin-seewaldt.de\/?p=35\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Scanner-Anbindung mit ActiveX-Control - Martin Seewaldt\" \/>\n<meta property=\"og:description\" content=\"Jetzt m\u00f6chte ich eine Anwendung, die ich als Freelancer erstellt habe, vorstellen. Gestelltes Problem Eine Tochter eines grossen, deutschen Luftfahrtkonzerns brauchte zur Kl\u00e4rung von Sonderf\u00e4llen bei der Ticketabrechnung eine Anwendung, mit der mehrere Flugtickets mit einem an den PC des Bearbeiters angeschlossenen Scanner aus einer ABAP-Anwendung heraus eingescannt und per FTP in das dortige Image-Archiv [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/martin-seewaldt.de\/?p=35\" \/>\n<meta property=\"og:site_name\" content=\"Martin Seewaldt\" \/>\n<meta property=\"article:published_time\" content=\"2003-05-01T12:35:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-09-09T20:04:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/martin-seewaldt.de\/Programme\/SiraxScan.jpg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=35#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=35\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/#\\\/schema\\\/person\\\/a1a6571321f54991629bb99be16f5e5f\"},\"headline\":\"Scanner-Anbindung mit ActiveX-Control\",\"datePublished\":\"2003-05-01T12:35:55+00:00\",\"dateModified\":\"2020-09-09T20:04:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=35\"},\"wordCount\":309,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=35#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/martin-seewaldt.de\\\/Programme\\\/SiraxScan.jpg\",\"articleSection\":[\"Programme\\\/Apps\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/martin-seewaldt.de\\\/?p=35#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=35\",\"url\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=35\",\"name\":\"Scanner-Anbindung mit ActiveX-Control - Martin Seewaldt\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=35#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=35#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/martin-seewaldt.de\\\/Programme\\\/SiraxScan.jpg\",\"datePublished\":\"2003-05-01T12:35:55+00:00\",\"dateModified\":\"2020-09-09T20:04:13+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/#\\\/schema\\\/person\\\/a1a6571321f54991629bb99be16f5e5f\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=35#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/martin-seewaldt.de\\\/?p=35\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=35#primaryimage\",\"url\":\"https:\\\/\\\/martin-seewaldt.de\\\/Programme\\\/SiraxScan.jpg\",\"contentUrl\":\"https:\\\/\\\/martin-seewaldt.de\\\/Programme\\\/SiraxScan.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=35#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/martin-seewaldt.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Scanner-Anbindung mit ActiveX-Control\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/#website\",\"url\":\"https:\\\/\\\/martin-seewaldt.de\\\/\",\"name\":\"Martin Seewaldt\",\"description\":\"Einige meiner Projekte\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/martin-seewaldt.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/#\\\/schema\\\/person\\\/a1a6571321f54991629bb99be16f5e5f\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8c382657803c93429dee7a228c33968728e6adc9a850a0b0488abd4e9c466179?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8c382657803c93429dee7a228c33968728e6adc9a850a0b0488abd4e9c466179?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8c382657803c93429dee7a228c33968728e6adc9a850a0b0488abd4e9c466179?s=96&d=mm&r=g\",\"caption\":\"admin\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Scanner-Anbindung mit ActiveX-Control - Martin Seewaldt","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/martin-seewaldt.de\/?p=35","og_locale":"en_US","og_type":"article","og_title":"Scanner-Anbindung mit ActiveX-Control - Martin Seewaldt","og_description":"Jetzt m\u00f6chte ich eine Anwendung, die ich als Freelancer erstellt habe, vorstellen. Gestelltes Problem Eine Tochter eines grossen, deutschen Luftfahrtkonzerns brauchte zur Kl\u00e4rung von Sonderf\u00e4llen bei der Ticketabrechnung eine Anwendung, mit der mehrere Flugtickets mit einem an den PC des Bearbeiters angeschlossenen Scanner aus einer ABAP-Anwendung heraus eingescannt und per FTP in das dortige Image-Archiv [&hellip;]","og_url":"https:\/\/martin-seewaldt.de\/?p=35","og_site_name":"Martin Seewaldt","article_published_time":"2003-05-01T12:35:55+00:00","article_modified_time":"2020-09-09T20:04:13+00:00","og_image":[{"url":"https:\/\/martin-seewaldt.de\/Programme\/SiraxScan.jpg","type":"","width":"","height":""}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/martin-seewaldt.de\/?p=35#article","isPartOf":{"@id":"https:\/\/martin-seewaldt.de\/?p=35"},"author":{"name":"admin","@id":"https:\/\/martin-seewaldt.de\/#\/schema\/person\/a1a6571321f54991629bb99be16f5e5f"},"headline":"Scanner-Anbindung mit ActiveX-Control","datePublished":"2003-05-01T12:35:55+00:00","dateModified":"2020-09-09T20:04:13+00:00","mainEntityOfPage":{"@id":"https:\/\/martin-seewaldt.de\/?p=35"},"wordCount":309,"commentCount":0,"image":{"@id":"https:\/\/martin-seewaldt.de\/?p=35#primaryimage"},"thumbnailUrl":"https:\/\/martin-seewaldt.de\/Programme\/SiraxScan.jpg","articleSection":["Programme\/Apps"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/martin-seewaldt.de\/?p=35#respond"]}]},{"@type":"WebPage","@id":"https:\/\/martin-seewaldt.de\/?p=35","url":"https:\/\/martin-seewaldt.de\/?p=35","name":"Scanner-Anbindung mit ActiveX-Control - Martin Seewaldt","isPartOf":{"@id":"https:\/\/martin-seewaldt.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/martin-seewaldt.de\/?p=35#primaryimage"},"image":{"@id":"https:\/\/martin-seewaldt.de\/?p=35#primaryimage"},"thumbnailUrl":"https:\/\/martin-seewaldt.de\/Programme\/SiraxScan.jpg","datePublished":"2003-05-01T12:35:55+00:00","dateModified":"2020-09-09T20:04:13+00:00","author":{"@id":"https:\/\/martin-seewaldt.de\/#\/schema\/person\/a1a6571321f54991629bb99be16f5e5f"},"breadcrumb":{"@id":"https:\/\/martin-seewaldt.de\/?p=35#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/martin-seewaldt.de\/?p=35"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/martin-seewaldt.de\/?p=35#primaryimage","url":"https:\/\/martin-seewaldt.de\/Programme\/SiraxScan.jpg","contentUrl":"https:\/\/martin-seewaldt.de\/Programme\/SiraxScan.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/martin-seewaldt.de\/?p=35#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/martin-seewaldt.de\/"},{"@type":"ListItem","position":2,"name":"Scanner-Anbindung mit ActiveX-Control"}]},{"@type":"WebSite","@id":"https:\/\/martin-seewaldt.de\/#website","url":"https:\/\/martin-seewaldt.de\/","name":"Martin Seewaldt","description":"Einige meiner Projekte","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/martin-seewaldt.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/martin-seewaldt.de\/#\/schema\/person\/a1a6571321f54991629bb99be16f5e5f","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/8c382657803c93429dee7a228c33968728e6adc9a850a0b0488abd4e9c466179?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/8c382657803c93429dee7a228c33968728e6adc9a850a0b0488abd4e9c466179?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8c382657803c93429dee7a228c33968728e6adc9a850a0b0488abd4e9c466179?s=96&d=mm&r=g","caption":"admin"}}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=\/wp\/v2\/posts\/35","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=35"}],"version-history":[{"count":3,"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=\/wp\/v2\/posts\/35\/revisions"}],"predecessor-version":[{"id":503,"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=\/wp\/v2\/posts\/35\/revisions\/503"}],"wp:attachment":[{"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=35"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=35"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=35"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}