Считывание нескольких штрих-кодов из одного файла изображения с помощью библиотеки Zxing в сервисе java - PullRequest
0 голосов
/ 24 февраля 2020

Привет, я создал сервис java для считывания штрих-кода с изображения здесь. Я использую библиотеку Zxing для декодирования текста здесь, проблема в том, что если файл с одним штрих-кодом работает нормально, если имеется несколько штрих-кодов, он дает неуместный результат, я дал мой код ниже.

пом. xml

<!-- https://mvnrepository.com/artifact/com.google.zxing/core -->
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>core</artifactId>
            <version>3.4.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.google.zxing/javase -->
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>javase</artifactId>
            <version>3.4.0</version>
        </dependency>

java service

@GetMapping(value = "OCR/GetBarcodeRead")
    @ApiOperation(value = "Get result from Barcode Zxing library")
    public String GetBarcodeRead() throws Exception {

        InputStream barCodeInputStream = new FileInputStream("images/multiple.jpg");
        BufferedImage barCodeBufferedImage = ImageIO.read(barCodeInputStream);

        LuminanceSource source = new BufferedImageLuminanceSource(barCodeBufferedImage);
        BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
        Reader reader = new MultiFormatReader();
        Result result = reader.decode(bitmap);

        return result.getText();

    }

Результат примерно такой

CODE93

Изображение с несколькими штрих-кодами

enter image description here

Как мне прочитать и получить все штрих-коды, доступные на данном изображении, используя библиотеку Zxing? Может ли кто-нибудь помочь мне достичь этого? заранее спасибо

обходной путь

@GetMapping(value = "OCR/GetBarcodeRead")
    @ApiOperation(value = "Get result from Barcode Zxing library")
    public String GetBarcodeRead() throws Exception {

        InputStream barCodeInputStream = new FileInputStream("images/multiple.png");
        BufferedImage barCodeBufferedImage = ImageIO.read(barCodeInputStream);

        LuminanceSource source = new BufferedImageLuminanceSource(barCodeBufferedImage);
        BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
        Reader reader = new MultiFormatReader();
        MultipleBarcodeReader multipleReader = new GenericMultipleBarcodeReader(reader);
        Result[] results = multipleReader.decodeMultiple(bitmap);
        //Result result = reader.decode(bitmap);

        return results.toString();

    }

рабочий код

@GetMapping(value = "OCR/GetBarcodeRead")
    @ApiOperation(value = "Get result from Barcode Zxing library")
    public String GetBarcodeRead() throws Exception {



        InputStream barCodeInputStream = new FileInputStream("images/K71NM.jpg");
        BufferedImage barCodeBufferedImage = ImageIO.read(barCodeInputStream);

        LuminanceSource source = new BufferedImageLuminanceSource(barCodeBufferedImage);
        BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
        com.google.zxing.Reader reader = new MultiFormatReader();
        MultipleBarcodeReader bcReader = new GenericMultipleBarcodeReader(reader);
        Hashtable<DecodeHintType, Object> hints = new Hashtable<DecodeHintType, Object>();
        hints.put(DecodeHintType.TRY_HARDER, Boolean.TRUE);
        StringBuilder sb = new StringBuilder();

        for (Result result : bcReader.decodeMultiple(bitmap, hints)) {
            sb.append(result.getText()).append(" \n");
        }


        return sb.toString();

    }

1 Ответ

1 голос
/ 24 февраля 2020

Вы можете обернуть свой читатель в GenericMultipleBarcodeReader и использовать decodeMultiple, который возвращает массив результатов:

MultipleBarcodeReader multipleReader = new GenericMultipleBarcodeReader(reader);
Result[] results = multipleReader.decodeMultiple(bitmap);

Ссылка

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