我是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)不是。!
答案 0 :(得分:0)
根据您所说的,我的猜测是您需要对图像进行轻微模糊或下采样。大量的白噪声会干扰检测。