Ok, here we go. I googled a little bit around for you.
First, there are different ways how an ISBN is encoded and printed on a book.
If you have newer books you will find an ISBN number directly encoded as an EAN-13 code. That kind of EAN-13 is called Bookland Codes.
They start with "978". If you use the ResultParser class with the Result string from the decoder you will get an ISBNParsedResult object.
On older books the ISBN is encoded as an UPC with a 5 digit extension. That's the case in your sample picture.
You have to use a lookup table to convert the UPC vendor code to an ISBN vendor code. Then you have to add the 5 digits from the extension
and calculate the checksum number.
In your case, UPC vendor code 037145 translates to the ISBN vendor code 0812. Add now the 5 extension digits 54809. Calculate the checksum which
should be 4 -> 0-812-54809-4.
I found a small translation table here:
The main problem is the 5 digits extension. It can be read by ZXing.Net BUT if the UPC code is found in an image row which doesn't contain
the extension barcode then you won't get it. It only returns the UPC code.
You can try it yourself. Crop the image that only the real barcode is visible. That should "simulate" a mobile phone which only centers the barcode
in the middle of the sanning region. The result object should contain now an entry with the key ResultMetadataType.UPC_EAN_EXTENSION in Result.ResultMetadata.
That's the 5 digits extension.