Summary: | Checkout via camera on device | ||
---|---|---|---|
Product: | Koha | Reporter: | Christopher Brannon <cbrannon> |
Component: | OPAC | Assignee: | Bugs List <koha-bugs> |
Status: | Failed QA --- | QA Contact: | Testopia <testopia> |
Severity: | enhancement | ||
Priority: | P5 - low | CC: | arthur.suzuki, bugzilla, cgdavis, dcook, emily.lamancusa, fiona.borthwick, fraktik, ian, kugler_stefan, lisettepalouse+koha, lucas, magnus, martin.renvoize, philip.orr, rcoert, sally.healey |
Version: | Main | ||
Hardware: | All | ||
OS: | All | ||
Change sponsored?: | --- | Patch complexity: | Small patch |
Documentation contact: | Documentation submission: | ||
Text to go in the release notes: | Version(s) released in: | ||
Circulation function: | |||
Bug Depends on: | 30979 | ||
Bug Blocks: | |||
Attachments: |
Bug 23641: Add barcode capture via device camera for self-checkout
Bug 23641: Add barcode capture via device camera for self-checkout |
Description
Christopher Brannon
2019-09-19 03:01:25 UTC
This would be very helpful! With HTML5 and smartphone development where they currently stand in 2019, this might actually finally be possible! Some possible approaches: https://a.kabachnik.info/reading-barcodes-with-built-in-camera-with-html5.html#fileapi Very exciting stuff! I definitely love the idea :) *** Bug 23699 has been marked as a duplicate of this bug. *** Nice, we're in 2020 now, I wonder if things have stablised enough to attempt adding such functionality now. I would also love this feature very much. I am trying to learn how to process an complete audit of whole library without moving all those items from shelves to the desk and back or buying laptops just for this purpose. We are obligated to do this every second or fifth year here in Czech Republic, and it is every time quite an operation - we have 10 "big" (20-80k) and 100 small (2-6k of volumes) local libraries. As of now, smoothest solution I see in Android tablets/phablets/phones + dedicated readers (we have USB versions, but I am thinking about buying some Bluetooth variations, any experience or recomendation in this field)? I would also love this feature very much. I am trying to learn how to process an complete audit of whole library without moving all those items from shelves to the desk and back or buying laptops just for this purpose. We are obligated to do this every second or fifth year here in Czech Republic, and it is every time quite an operation - we have 10 "big" (20-80k) and 100 small (2-6k of volumes) local libraries. As of now, smoothest solution I see in Android tablets/phablets/phones + dedicated readers (we have USB versions, but I am thinking about buying some Bluetooth variations, any experience or recomendation in this field)? https://zxing-js.github.io/library/ Looks promising *** Bug 25644 has been marked as a duplicate of this bug. *** With bug 30979 nearing completion, adding camera driven barcode input would be a nice enhancement. I would want a system for this type of self-check that could be configured on a a library-by-library basis. I have some that have no security system, some that have older security systems using tattle-tape, and some that have RFID. If a library has an older system that requires demagnetizing tattle-tape, the check-out process will not handle the tattle tape, so those libraries will not want borrowers to check themselves out with a phone. (In reply to Martin Renvoize from comment #8) > https://zxing-js.github.io/library/ Looks promising Back in June 2021, I did a local implementation using version 0.0.9 of https://github.com/zxing-js/browser It was easy enough to do, but the library didn't work that well. Performance ranged heavily between mobile devices (with cheaper devices not working well or at all in many cases), and even with a good more expensive device it could take a lot of attempts to get 1 good scan as the camera wouldn't focus on the barcode very well. We ended up discarding the implementation and integrating with third-party commercial software which worked much much better. -- I can share my zxing-js implementation, but I wouldn't recommend anyone use it. Created attachment 154400 [details] [review] Bug 23641: Add barcode capture via device camera for self-checkout This patch adds barcode capture via device camera using the zxing-browser Javascript library. In my original version, I wrapped the buttons with a system preference. I left it off here just for ease of testing. I just double-checked it worked using my webcam and a barcode from my breakfast. It took a bit of time and physical manipulation, but it managed to scan the barcode. Very cool! (In reply to Christopher Brannon from comment #15) > Very cool! I liked it! It tends to work better on higher end devices. We found cheaper smart phones didn't work very well. Looks like there's a patch to test here, thanks David. I'm resetting to NSO Very cool, David. Do you we need to add license information to the about page ZXing library? (In reply to Lucas Gass from comment #18) > Very cool, David. Do you we need to add license information to the about > page ZXing library? For some reason I thought people meant David Nind. Glad I decided to double-check the bug. Yeah, we'd better do that. This looks like the one: https://github.com/zxing-js/browser/blob/master/LICENSE As I mentioned before, we had a library try it and it didn't work well enough for them. We did another version using a commercial vendor (Scandit) which worked much better, although that has on-going costs associated with it. Created attachment 164827 [details] [review] Bug 23641: Add barcode capture via device camera for self-checkout This patch adds barcode capture via device camera using the zxing-browser Javascript library. Signed-off-by: Philip Orr <philip.orr@lmscloud.de> I tested this using only my laptop webcam. Worked for me with: - barcodes on books - barcode on my phone screen Did not work with barcodes on reflective things. For instance I tried scanning the barcode on a bag of chips - didn't work. Still very cool! I tested this on my 2019 iMac and I couldn't get anything to scan. I tested on my 2021 Macbook and it worked on UPC barcodes but none of the others I could find (unfortunately I don't know what types they were). I'm concerned that while cool, this isn't reliable enough to offer. If we do want to offer this I think some things need to be addressed: - Add a system preference to turn it on or off. - Add some feature-detection to hide the scan button if permission has been denied in the browser. - Establish which types of barcode are compatible. I see a list of supported types on the ZXing project page (https://github.com/zxing/zxing), but are they all working with the JS implementation. We also need an update to the about page with details of the plugin, but the other issues are higher priority. (In reply to Owen Leonard from comment #23) > I'm concerned that while cool, this isn't reliable enough to offer. Agreed. That's why we abandoned this path. It just wasn't reliable enough, and the Zxing library isn't that well supported. Wouldn't the primary uses of this feature be from phones? I see very little use case for iMac. While it might be possible someone would try something other than an Android or iPhone, I don't think those should be a show stopper. What were saying here is that to reliably scan barcode from the web on any platform you'll need to pay to use a service. Scandit, https://www.scandit.com/pricing/, as mentioned by David are the main one out there to my knowledge. Unfortunately, Android and iOS don't have any SDK's or similar to expose barcode data via their built in systems. I imagine there's commercial reasons for that somewhere along the line and unfortunately the open source alternative, xzing, doesn't perform well on anything but the highest specification platforms. We could ensure hooks are available in core for a plugin to support paid options like scandit, though it sounds like that's really already possible anyway as David seems to utilise that route. (In reply to Christopher Brannon from comment #25) > Wouldn't the primary uses of this feature be from phones? I see very little > use case for iMac. > > While it might be possible someone would try something other than an Android > or iPhone, I don't think those should be a show stopper. We had a number of libraries and librarians try it out, and their low end Android devices just weren't up to the task. It was unusable for them. Even on high-end devices, it could take a bit of work to get the scanning working. Feel free to try out the code, but I think you'll find that people complain that it doesn't work well enough. Scandit worked very well, but I don't have code for that at hand. I don't know if the library who was using them ended up continuing with that integration. I think they ended up opting for a dedicated self-checkout machine. (In reply to Christopher Brannon from comment #25) > While it might be possible someone would try something other than an Android > or iPhone, I don't think those should be a show stopper. I've put a proof of concept up. Feel free to sponsor someone to take it further if you think there's a future in it. I'm not going to work on it anymore, but someone else might be able to take it further. Browsers are also constantly changing, so you never know when better functionality might become available. Another thought for this concept down the road, if anyone ever decides to tackle it again - most barcodes print the number below the code. I know that some devices can pull text from an image. Would this be another approach at getting the barcode? Could it be a fallback method? |