Привет, я создал сервис 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
Изображение с несколькими штрих-кодами
Как мне прочитать и получить все штрих-коды, доступные на данном изображении, используя библиотеку 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();
}