Urgent: need QR Code bulk scanner

Offtopic, but I need urgent help:

I have images containing multiple QR Codes. I need some software that will extract all the codes and dump the results into a text file. I think this probably exists in commercial form, and I’m happy to purchase some software if needed - I just need to know of such a thing. The web is so polluted with AI garbage these days that it is difficult to weed through it.

Thanks!

How about you write your own?

Xojo can do some barcode detection.

And MBS Xojo Plugins have more like ZxingBarcodeMBS to read multiple barcodes from an image. Also see ZBarMBS function for the same with a different library.

Try putting this code in a button in a window.
Do a screenshot of some QR codes and click the button.
st1 will contain the contents of the codes it can read.

Var cp As Clipboard=New Clipboard
Var st1() As String =Barcode.FromImage(cp.Picture)
break

I’ve come to the conclusion that there is a veritable plague of crappy barcode reading software out there and that I will have to write my own. A sad state of affairs.

I have a Mac Dylib for the MBS ZXing plugin if you need it, but I think it may be only able to read one code per image.

Scandit’s performance is amazingly good but may be only available for mobile devices and is probably expensive

how about asking an AI to do the job ?
put your images in a folder
give access to the folder to Claude for example
and ask it to extract all qrcodes and save as text file
it will certainly do it.
if there are meny many images you may have to wait, or pay some plan to have it quicker.

And at some point it will stop working due not enough credit or a $10k bill appears due too much credit used?

The QRCodeMultiReader class of the ZXing lib was created to do just that. @Christian_Schmitz may need to implement it in his Zxing plugin.

Or you can write an aux app in another language like Go to dump the contents in a file and read them from Xojo, for example.

In the Go ecosystem, the most powerful and reliable way to handle multiple QR codes is through zxing-cpp wrappers. While there are pure Go libraries, they often struggle with multiple detections in a single frame compared to the C++ port of the Zebra Crossing (ZXing) library.

The most popular wrapper for this is github.com/makiuchi-d/go-zxing.

The Implementation

Here is how you can use the MultiFormatReader (which includes the QRCodeMultiReader logic) to scan an image for every QR code it contains.

Code sample by Gemini, not tested ( Rick :wink: )

Gopackage main

import (
	"fmt"
	"image"
	_ "image/jpeg"
	_ "image/png"
	"os"

	"github.com/makiuchi-d/go-zxing"
	"github.com/makiuchi-d/go-zxing/qrcode"
)

func main() {
	// 1. Open the image file
	file, _ := os.Open("multiple_qrs.png")
	defer file.Close()
	img, _, _ := image.Decode(file)

	// 2. Prepare the ZXing binary bitmap
	bmp, _ := zxing.NewBinaryBitmapFromImage(img)

	// 3. Initialize the Multi-Code Reader specifically for QR
	qrReader := qrcode.NewQRCodeMultiReader()

	// 4. Decode multiple codes
	// The second parameter is "hints" (e.g., TryHarder)
	results, err := qrReader.DecodeMultiple(bmp, nil)
	if err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}

	// 5. Iterate and print results
	fmt.Printf("Found %d QR codes:\n", len(results))
	for i, result := range results {
		fmt.Printf("[%d] Content: %s\n", i+1, result.GetText())
		
		// You can also get the coordinates of the corners
		points := result.GetResultPoints()
		fmt.Printf("    Location: Top-Left: %v\n", points[0])
	}
}

Key Components for Success

  1. Binary Bitmaps: ZXing doesn’t look at pixels directly; it converts the image into a BinaryBitmap. If your image has shadows or weird lighting, the choice of “Binarizer” matters. HybridBinarizer is usually the default for complex backgrounds.
  2. Hints: You can pass a map[zxing.DecodeHintType]interface{} to the DecodeMultiple function.
  • Using zxing.DecodeHintType_TRY_HARDER will spend more CPU time to find small or rotated codes.
  • Using zxing.DecodeHintType_CHARACTER_SET helps if your QR codes contain non-ASCII characters (like UTF-8).
  1. The “Multi” Logic: Standard readers stop the moment they find one valid pattern. QRCodeMultiReader continues to search the remaining “black/white” clusters in the bitmap until it exhausts all potential candidates.

yes it will ask you to come back in xx hours. but you don’t need any API key to ask for barcode reading, so no supplemental bill should appear. only your monthly plan you have to pay.

An automation can’t afford a “try later”.

In MBS Xojo Plugins we have ZxingBarcodeMBS](Monkeybread Xojo plugin - The module ZxingBarcodeMBS) to read multiple barcodes from an image.
Also see ZBarMBS function for the same with a different library.

It’s already there. Just try the sample project. You could even get the barcodes out without a license.

1 Like

I see. It’s called ZxingBarcodeMBS.ReadBarcodes() in your system

1 Like