Mã vạch

**Mã vạch** là sự thể hiện thông tin trong các dạng nhìn thấy trên các bề mặt của sản phẩm, hàng hóa mà máy móc có thể đọc được. Nguyên thủy thì mã vạch lưu trữ dữ liệu theo bề rộng của các vạch được in song song cũng như của khoảng trống giữa chúng, nhưng ngày nay chúng còn được in theo các mẫu của các điểm, theo các vòng tròn đồng tâm hay chúng ẩn trong các hình ảnh. Mã vạch có thể được đọc bởi các thiết bị quét quang học gọi là máy đọc mã vạch hay được quét từ hình ảnh bằng các phần mềm chuyên biệt.

Nội dung của mã vạch là thông tin về sản phẩm như: Nước đăng ký mã vạch, tên doanh nghiệp, lô, tiêu chuẩn chất lượng đăng ký, thông tin về kích thước sản phẩm, nơi kiểm tra...

## Lịch sử

Ý tưởng về mã vạch được phát triển bởi Norman Joseph Woodland và Bernard Silver. Năm 1948 khi đang là sinh viên ở trường Đại học tổng hợp Drexel, họ đã phát triển ý tưởng này sau khi được biết mong ước của một vị chủ tịch của một công ty buôn bán đồ ăn là làm sao để có thể tự động kiểm tra toàn bộ quy trình. Một trong những ý tưởng đầu tiên của họ là sử dụng mã Morse để in những vạch rộng hay hẹp thẳng đứng. Sau đó, họ chuyển sang sử dụng dạng "điểm đen" của mã vạch với các vòng tròn đồng tâm. Họ đã gửi đến cơ quan quản lý sáng chế Mỹ 2,612,994 ngày 20 tháng 10 năm 1949 công trình *Classifying Apparatus and Method* (Thiết bị và phương pháp phân loại) để lấy bằng sáng chế. Bằng sáng chế đã được phát hành ngày 7 tháng 10 năm 1952.

Thiết bị đọc mã vạch đầu tiên được thiết kế và xây dựng bởi Woodland (khi đó đang làm việc cho IBM) và Silver năm 1952. Nó bao gồm một đèn dây tóc 500 W và một ống chân không nhân quang tử được sản xuất bởi RCA cho các phim có âm thanh (nó để in theo phương pháp quang học lên trên phim). Thiết bị này đã không được áp dụng trong thực tế: để có dòng điện đo được bằng các nghiệm dao động (*oscilloscope*) thì đèn công suất 500 W gần như đã làm cháy giấy có mẫu mã vạch đầu tiên của họ. Nó đã không được sản xuất đại trà. Năm 1962 họ bán sáng chế này cho công ty Philips, sau đó Philips lại bán nó cho RCA. Phát minh ra tia laser năm 1960 đã làm cho các thiết bị đọc mã vạch trở nên rẻ tiền hơn, và sự phát triển của mạch bán dẫn (IC) làm cho việc giải mã các tín hiệu thu được từ mã vạch có ý nghĩa thực tiễn. Đáng tiếc là Silver đã chết năm 1963 ở 38 tuổi trước khi có bất kỳ những gì thực tiễn thu được từ sáng chế này.

Năm 1972, cửa hàng Kroger ở Cincinnati thử nghiệm việc sử dụng đầu đọc mã vạch điểm đen, với sự trợ giúp của RCA. Không may là các mã vạch điểm đen rất dễ nhòe khi in, và thử nghiệm đã không thu được thành công nào đáng kể. Cùng thời gian đó, Woodland ở IBM đã phát triển mã vạch tuyến tính được chấp nhận vào ngày 3 tháng 4 năm 1973 như là Mã sản phẩm chung (tiếng Anh: *Universal Product Code*, hay UPC). Vào ngày 26 tháng 6 năm 1974, sản phẩm bán lẻ đầu tiên (gói 10 thanh kẹo cao su *Juicy Fruit* của Wrigley) đã được bán bằng cách sử dụng đầu đọc mã vạch tại siêu thị Marsh ở Troy, Ohio. (Gói kẹo cao su này hiện nay nằm trong Viện bảo tàng quốc gia Hoa Kỳ ở Smithsonian.)

Năm 1992, Woodland đã được trao tặng giải thưởng Huy chương công nghệ quốc gia bởi Tổng thống George H. W. Bush.

Năm 2004, Nanosys Inc. sản xuất mã vạch nano (*nanobarcode*) - sợi dây kích thước nano (10−9 m) chứa các phần khác nhau của Si và GexSi1-x.

## Ứng dụng
Mã vạch (và các thẻ khác mà máy có thể đọc được như RFID) được sử dụng ở những nơi mà các đồ vật cần phải đánh số với các thông tin liên quan để các máy tính có thể xử lý. Thay vì việc phải đánh một chuỗi dữ liệu vào phần nhập liệu của máy tính thì người thao tác chỉ cần quét mã vạch cho thiết bị đọc mã vạch. Chúng cũng làm việc tốt trong điều kiện tự động hóa hoàn toàn, chẳng hạn như trong luân chuyển hành lý ở các sân bay.

Các dữ liệu chứa trong mã vạch thay đổi tùy theo ứng dụng. Trong trường hợp đơn giản nhất là một chuỗi số định danh được sử dụng như là chỉ mục trong cơ sở dữ liệu trong đó toàn bộ các thông tin khác được lưu trữ. Các mã EAN-13 và UPC tìm thấy phổ biến trên hàng bán lẻ làm việc theo phương thức này.

Trong các trường hợp khác, mã vạch chứa toàn bộ thông tin về sản phẩm, mà không cần cơ sở dữ liệu ngoài. Điều này dẫn tới việc phát triển mã vạch **tượng trưng** mà có khả năng biểu diễn nhiều hơn là chỉ các số thập phân, có thể là bổ sung thêm các ký tự hoa và thường của bảng chữ cái cho đến toàn bộ bảng mã ký tự ASCII và nhiều hơn thế. Việc lưu trữ nhiều thông tin hơn đã dẫn đến việc phát triển của các ma trận mã (một dạng của **mã vạch 2D**), trong đó không chứa các vạch mà là một lưới các ô vuông. **Các [[mã vạch cụm]]** là trung gian giữa mã vạch 2D thực thụ và mã vạch tuyến tính, và chúng được tạo ra bằng cách đặt các mã vạch tuyến tính truyền thống trên các loại giấy hay các vật liệu có thể in mà cho phép có nhiều hàng.

## Các phương thức biểu đạt tượng trưng
Việc chuyển đổi giữa thông tin của thông điệp và mã vạch được gọi là biểu đạt tượng trưng. Các thông số trong quá trình này được mã hóa từ các số/chữ đơn lẻ của thông điệp cũng như có thể có là các dấu hiệu bắt đầu hay kết thúc thành các vạch và các khoảng trống, kích thước của vùng lặng trước và sau mã vạch cũng như việc tính toán tổng kiểm lỗi (*checksum*) là bắt buộc.

Các quy trình biểu đạt tượng trưng tuyến tính có thể phân loại chủ yếu theo hai thuộc tính:
* *Liên tục* hay *Rời rạc*: Các ký tự trong biểu đạt tượng trưng liên tục được tiếp giáp với nhau, với một ký tự kết thúc bằng khoảng trống và ký tự tiếp theo bắt đầu bằng vạch, hoặc ngược lại. Các ký tự trong biểu đạt tượng trưng rời rạc bắt đầu và kết thúc bằng vạch; không gian giữa các ký tự bị bỏ qua, cho đến chừng nào mà nó đủ rộng để thiết bị đọc coi như là mã kết thúc.
* *Hai* hay *nhiều* độ rộng các vạch: Các vạch và các khoảng trống trong biểu đạt tượng trưng hai độ rộng là *rộng* hay *hẹp*. *Vạch rộng* rộng bao nhiêu lần so với *vạch hẹp* không có giá trị gì đáng kể trong việc nhận dạng ký tự (thông thường độ rộng của vạch rộng bằng 2-3 lần vạch hẹp). Các vạch và khoảng trống trong biểu đạt tượng trưng nhiều độ rộng là các bội số của độ rộng cơ bản gọi là module; phần lớn các loại mã vạch này sử dụng bốn độ rộng lần lượt bằng 1, 2, 3 và 4 module.

Các mã vạch cụm chứa mã vạch tuyến tính cùng một loại nhưng được lặp lại theo chiều đứng trong nhiều hàng.

Có nhiều chủng loại mã vạch 2D. Phần lớn là các ma trận mã, nó là tập hợp các module mẫu dạng điểm hay vuông phân bổ trên lưới mẫu. Các mã vạch 2D cũng có thể có các dạng nhìn thấy khác nhau. Cùng với các mẫu vòng tròn đồng tâm, thì còn một số mã vạch 2D có sử dụng kỹ thuật in ẩn (*steganography*) bằng cách ẩn mảng các module khác nhau về kích thước hay hình dạng trong các hình ảnh đặc thù riêng (ví dụ như của mã vạch DataGlyph).

### Quét/tương tác tượng trưng
Các mã vạch tuyến tính là phù hợp nhất để quét bằng các thiết bị quét laser, nó quét các tia sáng ngang qua mã vạch theo một đường thẳng, đọc các lát mỏng của mã vạch theo các mẫu sáng-sẫm quy ước trước.

Các mã vạch cụm cũng rất phù hợp để quét bằng thiết bị laser, với tia laser quét nhiều lần trên mã vạch.

Các mã vạch 2D thực thụ không thể đọc bằng các thiết bị quét tia laser bởi vì không có các mẫu định sẵn để quét mà phù hợp cho việc so sánh tổng thể các ký tự trong một mã vạch. Chúng được quét và so sánh bằng các thiết bị camera bắt hình.

## Các loại mã vạch
### Mã vạch tuyến tính
Đây là thế hệ mã vạch đầu tiên, mã vạch "một chiều" được tạo thành từ các đường thẳng và khoảng không gian có độ rộng khác nhau tạo ra các mẫu cụ thể.

### Mã vạch ma trận (2 chiều)
Mã ma trận, cũng được gọi là mã vạch 2D hoặc chỉ đơn giản là mã 2D, là một cách hai chiều để thể hiện thông tin. Nó tương tự như mã vạch tuyến tính (1 chiều), nhưng có thể biểu diễn nhiều dữ liệu hơn trên một đơn vị diện tích.

### Hình ảnh ví dụ

Tập tin:UPC-A-036000291452.png|Số GTIN-12 được mã hóa trong biểu tượng mã vạch UPC-A. Chữ số đầu tiên và cuối cùng luôn được đặt bên ngoài ký hiệu để cho biết Khu vực yên tĩnh cần thiết cho máy quét mã vạch hoạt động bình thường
Tập tin:EAN-13-5901234123457.svg|Mã EAN-13 (GTIN-13) được mã hóa trong biểu tượng mã vạch EAN-13. Chữ số đầu tiên luôn được đặt bên ngoài ký hiệu, chỉ báo khu vực yên tĩnh bên phải (>) được sử dụng để chỉ các Vùng Yên tĩnh cần thiết cho các máy quét mã vạch hoạt động bình thường
Tập tin:Code93.png|"Wikipedia" được mã hóa trong Code 93
Tập tin:Code39.png|"Wikipedia" được mã hóa trong Code 39
Tập tin:Wikipedia barcode 128.svg|'Wikipedia" được mã hóa bởi Code 128
Tập tin:Codablock-F Example.png|Một ví dụ về mã vạch xếp chồng lên nhau. Cụ thể là mã vạch "Codablock".
Tập tin:Better Sample PDF417.png|Ví dụ Code PDF417 
Tập tin:Lorem Ipsum.png|*Lorem ipsum* văn bản soạn sẵn như bốn phân đoạn dữ liệu ma trận 2D
Tập tin:Azteccodeexample.svg|"Đây là một ví dụ biểu tượng Aztec cho Wikipedia" được mã hóa trong Mã Aztec
Tập tin:EZcode.png|Mã 'EZcode'
Tập tin:High Capacity Color Barcode.png|Mã vạch màu dung lượng cao của URL cho bài viết của Wikipedia về mã vạch màu dung lượng cao
Tập tin:Dataglyph511140.png|"Wikipedia, Bách khoa toàn thư miễn phí" trong một số ngôn ngữ được mã hóa trong DataGlyphs
Tập tin:35mm film audio macro.jpg|Hai mã vạch 2D khác nhau được sử dụng trong phim: Dolby Digital giữa các lỗ xích với logo "Double-D" ở giữa và âm thanh kỹ thuật số động của Sony ở khu vực màu xanh ở bên trái của các lỗ xích
Tập tin:WikiQRCode.svg|Mã QR cho URL của Wikipedia. "Phản hồi nhanh", mã vạch 2D phổ biến nhất ở Nhật Bản, được Google quảng cáo. Nó được mở trong đó đặc điểm kỹ thuật được tiết lộ và bằng sáng chế không được thực hiện.
Tập tin:MaxiCode.svg|Ví dụ về MaxiCode. mã hóa chuỗi: "Wikipedia, The Free Encyclopedia"
Tập tin:Shotcode.png|Ví dụ ShotCode
Tập tin:Twibright Optar Detail Scanned.png|chi tiết của Twibright Optar quét từ giấy in laser, mang 32 kbit / s âm nhạc kỹ thuật số Ogg Vorbis (48 giây cho mỗi trang A4)
Tập tin:KarTrak code.jpg|Một nhãn hiệu nhận dạng thiết bị tự động đường sắt KarTrak trên một chiếc taxi ở Florida


## Xem thêm
* Mã sản phẩm chung (UPC)
* Semacode
* ISBN
* Hệ thống kiểm soát hàng tồn kho
* Máy in mã vạch
* Máy quét mã vạch
* RFID
* GTIN

## Tham khảo

## Liên kết ngoài

* What is an EAN barcode
* PHPSVGBarcode Công cụ tạo mã vạch code128,code39, EAN13, EAN8 viết bằng PHP sử dụng định dạng ảnh véc-tơ SVG.