1

在我的iOS應用程序中,我使用第三方掃描庫掃描Code39條形碼。該軟件有時會導致掃描錯誤(例如,值「13415566」返回爲「U *」)。有時相同的條形碼工作正常,然後再次掃描相同的代碼,這是錯誤的。條形碼Code39掃描可靠嗎?

第三方軟件供應商報告Code39不是'可靠'格式,並且'它沒有錯誤保護,並且通常可能會得到錯誤的讀取'。

這對我來說似乎很荒謬。有問題的代碼沒有校驗位,但即便如此,這肯定只是掃描軟件中的一個錯誤? Code39是否因此類而聞名?如果它有時會「錯誤」,它怎麼可能是一種被採用的格式呢?

謝謝。

+0

如果您閱讀關於code39的維基百科文章,您會發現您的供應商有一點。我在票據掃描方面有這些類型的代碼的個人經驗,我們的專業掃描儀的失敗率通常是幾%。這些是帶有激光器的設備。有時候,他們會在條碼中看到短條形碼(例如,嘗試掃描牛仔褲)。軟件通常比激光表現更差... – 576i

回答

4

代碼39可讀性應該沒有大的問題。當在可靠掃描很重要的應用中使用時,代碼39通常部署在防止誤讀的情況下,以模數43校驗位的形式進行部署,掃描器配置爲在將代碼傳遞到系統之前進行驗證。任何半條形碼條形碼生成器或條形碼讀取器將支持Code 39校驗位。

由於我沒有看到您正在掃描的Code 39條形碼的打印質量是不可能確定的,但是我肯定會建議您使用質量非常差的Code 39掃描的閱讀器軟件。

您的條形碼庫可能是混淆由於以下原因,但它是不可能的,以確保沒有設備的大量的調試......

下面我比對時使用的online barcode generator基礎創建了兩個39個圖像在Barcode Writer in Pure PostScript。頂部是包含「U」的水平翻轉的圖像,下面是包含「13415566」的圖像。

Two code 39 barcodes aligned

從閱讀上面的圖像從右到左,你可以看到有與底部圖像的某些部分的相似程度。

掃描儀可能被原諒這個未受保護的39碼的不同之處在於它具有以下針對它的誤讀:

  • 應該期待領導開始之前的靜區(空格)吧序列。
  • 它應該在追蹤止動條序列之後期待一個完全區域。
  • 「U」的條形圖不完全正確。
  • 假定的停止欄序列不完全正確。
+1

我不認爲應該責怪掃描儀。人們可以構造代碼39序列,如果打印爲上方和下方具有空白的條形碼,則進入頂部並離開底部或反之亦然的對角線將「看到」完全良好形成的Code 39條形碼,包括安靜區域,代表虛假數據。大多數人物組合不適合這樣的誤讀,但可能被誤讀的組合不會特別不太可能發生。 – supercat

1

許多條形碼掃描儀讀取單行上的黑色和白色部分。他們不知道這條線是水平的,垂直的還是對角線的,並且沒有內在的方法知道這條線是否「進入」一側的條形碼並離開另一側,或者如果它通過頂部進入,十字形對角線的條形碼,並通過底部退出。

一些條形碼格式,例如Interleaved 2 of 5開始和結尾的圖案通常在條形碼內出現[I2of5以BwBw開始並以BBwB結束],並且可能會出現部分掃描,從頂部底部被誤讀,就像它是一個較短代碼的有效掃描一樣。其他一些條碼格式的起始和結尾都是選擇的模式,因此部分掃描無法讀取爲有效數據。代碼39介於兩者之間。

每個有效的代碼39條形碼都以BwBBwBBwwBw開頭並以wBwBBwBBwwB結尾。可以讓序列wBwBB出現在一個字符的末尾,BBwwBw出現在下一個字符的開始,它們之間有一個「w」。如果兩個這樣的字符對出現在條形碼內,則它們之間出現有限的各種字符,並且掃描在恰當的位置退出第一對,並且同樣在恰當的位置退出第二對,掃描儀會看到一個合法形成的條形碼,其內容與原始文件沒有明顯的相似之處。有人故意選擇滿足必要標準的條形碼數據,並試圖以一定角度掃描以產生錯誤讀取,但從許多掃描儀獲得錯誤讀取時,幾乎沒有問題,但數據和掃描角度必須「恰到好處」爲了造成問題。

如果有人擔心這種誤讀的可能性,可以打印條形碼,以保證掃描碼不會被視爲有效。這樣做的一個簡單方法是在條形碼上方和下方打印黑色,以便通過頂部或底部進入和/或退出的任何掃描都會將代碼視爲以特別厚的黑色條開始和/或結束。在許多看到「堆疊」條形碼的地方,它們將被一些不包含信息的點分開,而是設計用來確保從一行到另一行的掃描不被視爲有效。