Непоследовательный результат при чтении нескольких QR-кодов из отсканированного PDF с использованием библиотеки zxing - PullRequest
1 голос
/ 16 февраля 2012

Я новичок в zxing library и так в QR-кодах. Используя zxing library 1.7, я сгенерировал QR-коды, эти QR-коды прикреплены к бумагам, и бумаги впоследствии сканируются в PDF. Я, конечно, создал клиентскую программу, используя саму библиотеку zxing, которая читает эту отсканированную PDF страницу за страницей и показывает текст QR-кода, если какой-либо QR-код найден на странице. Я пытаюсь прочитать несколько QR с каждой страницы отсканированного PDF.

Хотя я могу прочитать какой-то QR-код, результат не соответствует. Означает, что я могу прочитать некоторый QR-код на странице PDF, в то время как некоторые из них не распознаются моей клиентской программой. Я прошел через другие темы по той же теме . и немного изменил мой код, хотя я не могу получить 100% результат.

Вот мой фрагмент кода, чтобы дать больше представления о том, что именно я делаю.

Примечание: я использую PdfReaderContentParser из библиотеки itext PDF для извлечения отсканированного изображения каждой страницы PDF , как показано здесь

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();
    }
}

Я перепробовал много комбинаций, но не повезло. Это из-за плохого качества изображения? Но тогда как некоторые изображения узнаются, а некоторые остаются загадкой :(

Кто-нибудь знает, что мне делать, чтобы преодолеть эту проблему? Вот один пример изображения внизу для вашей справки, в котором первое изображение распознается с использованием приведенного выше кода, где второе (HRA) нет.!

1 Ответ

0 голосов
/ 16 февраля 2012

Мое предположение на основании того, что вы сказали, заключается в том, что вам нужно слегка размыть или уменьшить частоту изображения.Большое количество белого шума мешает обнаружению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...