使用zxing库从扫描的PDF读取多个QR码时的结果不一致

时间:2012-02-16 09:23:14

标签: java qr-code zxing itextpdf

我是zxing library的新手,也是QR码的新手。使用zxing library 1.7我生成了QR码,这些QR码贴在纸上,纸张随后用PDF扫描。我当然使用zxing库本身创建了客户端程序,该页面逐页读取扫描的PDF文件,如果在页面上找到任何QR码,则显示QR码文本。我试图从扫描的PDF的每一页读取多个QR。

虽然我能够读取一些QR码但结果不一致。意味着我能够在PDF页面中读取一些QR码,而其中一些不能被我的客户端程序识别。我走了through other threads for same topic。并修改了我的代码,虽然我无法获得100%的结果。

这是我的代码片段,可以更好地了解我正在做的事情。

  

注意:我正在使用itext PDF库的PdfReaderContentParser来提取每个pdf页面的扫描图像as shown here

private void extractBarcodeText(BufferedImage bufferedImage) {

    try {
        Hashtable<DecodeHintType, Object> hints = new Hashtable<DecodeHintType, Object>();
        hints.put(DecodeHintType.TRY_HARDER, BarcodeFormat.QR_CODE);
        LuminanceSource source = new com.google.zxing.client.j2se.BufferedImageLuminanceSource(bufferedImage);
        BinaryBitmap bitmap = new BinaryBitmap(new GlobalHistogramBinarizer(source));
        List<String> innerTextList = new ArrayList<String>();
        QRCodeMultiReader multiReader = new QRCodeMultiReader();
        Result[] results = multiReader.decodeMultiple(bitmap, hints);

        for (int k = 0; k < results.length; k++) {
            String text = results[k].getText();
            innerTextList.add(text);
            System.out.println("####################  Rendered Text from Image #################"+ " " + text);
        }       
    } catch (NotFoundException e) {
        e.printStackTrace();
    }
}

我尝试了很多组合,但没有运气。是因为图像质量差吗?但后来一些图像如何被识别,一些仍然是一个谜:(

有谁知道我该怎么做才能克服这个问题?这里有一个sample image,供您参考,第一张图片是使用上面的代码识别的,其中第二张(HRA)不是。!

1 个答案:

答案 0 :(得分:0)

根据您所说的,我的猜测是您需要对图像进行轻微模糊或下采样。大量的白噪声会干扰检测。