ZXing没有正确阅读巴西条码账单(交错2/5)。我该如何解决?

时间:2014-03-06 19:46:35

标签: android barcode zxing

我正在使用XZing 2.3.0来阅读ITF条形码,但ZXing没有正确读取47位数的巴西账单。

以下示例条形码图片(available here)已被视为033915959002000008009557735480001438148929501028而非03399557345480001431548929501020159590000000800

示例PDF(用于打印)是available here。条形码序列号位于账单的顶部(由点和空格分隔的一长串数字)。

我已经尝试过以下代码(但没有成功):

Intent intent = new Intent("com.google.zxing.client.android.SCAN"); intent.putExtra("SCAN_FORMATS", "AZTEC,CODABAR,CODE_39,CODE_93,CODE_128,DATA_MATRIX,EAN_8,EAN_13,ITF,MAXICODE,PDF_417,QR_CODE,RSS_14,RSS_EXPANDED,UPC_A,UPC_E,UPC_EAN_EXTENSION"); intent.putExtra("SCAN_MODE", Intents.Scan.ONE_D_MODE); intent.putExtra("ALLOWED_LENGTHS", new int[] { 48, 44, 47, 24, 20, 18, 16, 14, 12, 10, 8, 6 });

如何让ZXing正确读取该条形码?

感谢您的帮助,如果我能澄清其他任何事情,请告诉我。

3 个答案:

答案 0 :(得分:3)

正如@Michael所说,你实际上并不确定条形码会说出你的想法。

条形码确实说03391595900000008009557354800014314892950102

http://zxing.org/w/decode?u=http%3A%2F%2Fwww.shimatai.com.br%2Fimages%2Fboleto.png

http://online-barcode-reader.inliteresearch.com/default.aspx 03391595900000008009557354800014314892950102

http://online-barcode-reader.com/ 03391595900000008009557354800014314892950102

答案 1 :(得分:1)

解决! ZXing正在读书。问题是巴西模式,因为字段的排列顺序与帐单顶部显示的顺序不同。那太疯狂了!

答案 2 :(得分:1)

所以,这里有一些关于'boletos'的巴西条形码的提示。

首先,他们使用一种名为'interleaved of of 2'的条形码。此类型通常要求您在条形码扫描仪上设置尺寸(例如:读取44个长度条形码)。这是因为这种类型允许“半读”(当您只读取部分代码时),因此修改大小是一种转变。

第二件事是银行期望的是一个名为IPTE的代码,它的布局与条形码中的代码不同。

为了使事情变得更糟,IPTE已经标准化,但条形码却没有。因此,尽管具有相同的类型和相同的长度,每个银行使用不同的布局。例如,您可以在代码的中间或末尾使用银行帐户。只有代码的开头是标准化的,并且是指银行编号。从那里开始,每个银行都按照自己的方式开发了其余的代码。

您可以尝试使用BoletoNet,它将条形码的逻辑结合到您的系统中或阅读Febraban网站上的文档(Febraban是巴西银行协会)。这两个网站和文件都只能用葡萄牙语提供。