我正在使用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正确读取该条形码?
感谢您的帮助,如果我能澄清其他任何事情,请告诉我。
答案 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是巴西银行协会)。这两个网站和文件都只能用葡萄牙语提供。