65.9K
CodeProject 正在变化。 阅读更多。
Home

扫描并从 PDF 文件读取条形码

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.89/5 (29投票s)

2010年8月5日

CPOL

4分钟阅读

viewsIcon

358635

downloadIcon

30226

扫描 PDF 文件并识别其是否包含条形码

致谢

该项目是关于条形码识别的。该项目包含解码/编码 EAN-13、EAN-8 和二维码条形码。我还添加了扫描 PDF 文件的功能,并且该软件足够智能,可以识别 PDF 是否包含任何条形码。

从 PDF 文件中检测 EAN -13、EAN – 8 和二维码。

引言

我们需要一个可以读取 PDF 文件并识别文件中的 EAN-13 和二维码的功能。最重要的是,我需要 EAN-13 和二维码的解码和编码算法。我在互联网上看到了一些关于条形码识别的解决方案,但它们运行得有点慢,所以我决定对它们进行优化。

EAN-13

EAN-13,基于 UPC-A 标准,由国际物品编码协会 (EAN) 实施欧洲.

一个典型的 EAN-13 条形码看起来像这样

计算校验位

计算校验位的步骤如下

  1. 将消息的最右边的数字视为“奇数”位置,并从右到左为每个字符分配奇数/偶数。
  2. 将所有奇数位置的数字相加,并将结果乘以 3。
  3. 将所有偶数位置的数字相加。
  4. 将步骤 2 和 3 中计算的总数相加。
  5. 校验位是当添加到步骤 4 中计算的总数时,结果能被 10 整除的数字。
  6. 如果步骤 4 中计算的总和能被 10 整除,则校验位为“0”(而不是 10)。

QR 码

二维码是一种矩阵条形码(或二维条码),可通过二维码扫描仪、带有摄像头的手机和智能手机读取。该代码由排列在白色背景上的方形图案中的黑色模块组成。编码的信息可以是文本、URL 或其他数据。

了解二维码的组成部分

二维码的使用

二维码可以在一个小矩阵中存储非常复杂的信息。随着人们对它们有多有用的认识不断提高,我们可以期望在更多公共场所看到它们。商业包装将显示带有详细营养信息或指向网站的二维码,用户可以在这些网站上玩最新的产品相关游戏或注册更新或优惠券。在学术应用中,学生测试上的二维码可以帮助确保评分的匿名性。张贴在艺术品旁边或在音乐或戏剧节目中,二维码可能会引导学生进入开放论坛,在那里他们可以参与关于他们所听或所见的社区讨论。在科学研究中,二维码可以代替印刷标签;附在实验室工作、样品或药物选项上,它们可以保护参与者姓名的机密性。

Using the Code

要打开解决方案,您需要 Visual Studio 2008。

  1. EAN -13

    要生成 EAN-13 条形码的图像,您需要单击“编码”按钮。附加的解决方案包含“BarcodeImaging”项目,该项目具有绘制输入的条形码数字的图像的功能。

    //===== Encoding performed here =====
    
    barcode.Image = b.Encode(type, this.txtData.Text.Trim(), W, H);
    
    //===================================

    要解码 EAN -13,请转到“EAN-13 解码”选项卡,您可以在其中选择图像文件,一旦您单击“解码”按钮,如果图像包含有效的条形码,软件将返回条形码数字。

    //===== Scanning of image performed here =====
    
    BarcodeImaging.FullScanPage(ref barcodes, (Bitmap)this.pictureBox1.Image, iScans);
    
    //===================================
  2. QR 码

    输入您要存储到二维码中的数据。您可以设置二维码的编码、纠错级别、版本和大小。一旦您单击“编码”按钮,将生成图像。

    附加的解决方案包含“QRCodelib”,它具有二维码的编码和解码功能。

    //===== Encoding performed here =====
    
    String data = txtEncodeData.Text;
    
    image = qrCodeEncoder.Encode(data);
    
    //===================================

    要解码二维码

    //===== Decoding performed here =====
    
    String decodedString = decoder.decode
    	(new QRCodeBitmapImage(new Bitmap(picDecode.Image)));
    
    //===================================
  3. PDF 扫描

    本文中最有趣的部分是扫描 PDF 并识别条形码。我使用“PdfToImage”ghost script 来生成所有 PDF 页面的图像。您需要选择 PDF 文件并单击“扫描”按钮,应用程序将扫描 PDF。

关注点

需要从文件中识别条形码的人可以使用此项目。除了现有的已实现功能外,我希望代码中进行一些增强,这些增强如下所示

  • 支持更多条形码符号
  • 二维码解码器运行有点慢,需要对算法进行优化
  • 需要更多文件类型支持,目前项目仅支持 PDF 文件
  • 需要根据国家、制造和产品代码创建 EAN-13 代码

参考文献

历史

这是我文章的第一个版本,我将很快发布带有增强功能的第二个版本。

© . All rights reserved.