I'm looking for a good open-source library that can find and read a barcode from an image (versus using a barcode scanner). From other questions on Stack Overflow, I've found that ZXing ("Zebra Crossing") is quite good. Though it is made for Java, there is a C# port – however, I believe that it might not be complete. Do you think it is reliable enough to parse a barcode from such a situation, or is some other library better?
EDIT: As Ed pointed out in the comments, I should just try it first. Wow, I did not think of that. 🙂 but I guess my question is whether the partial port is reliable enough – if any of you have used it before, can it scan with proficiency?
This depends on what you are using it for, of course. Even the Java version of zxing has some important limitations and performance issues. For example, it can only find one barcode on a page. Also, the algorithms it uses for locating 1-D barcode on the page are not particularly efficient (no idea about the algorithms for 2-D barcodes - that wasn't part of the requirements on the project I was working on). This is all stuff that can be addressed - I started an enhancement a few months ago and was able to significantly improve 1-D location performance and reliability, but our dev priorities have shifted so I haven't worked on it since then.
As for whether the partial port to C# is good, if you want to post back with what the differences are, I'd be happy to comment.
EDIT - here is some of the refactoring that I did:
First, factor out RowNumberStrategy as follows:
then the top part of doDecode becomes as follows:
ultimately, this should be something that can be set via a DecodeHintType, but we've found that the progressive strategy is faster than the old strategy in every case we could throw at it (and not just a little faster - much faster).