当前位置: 首页 > news >正文

国产化条码类库Spire.Barcode教程:如何使用 C# 读取 PDF 中的条码(两种方法轻松实现)

在 PDF 文档的 .NET 平台处理流程中,使用 C# 读取 PDF 条码 是一项常见需求,特别适用于处理扫描件或电子表单。无论是物流、金融、医疗还是制造行业,PDF 文档中经常包含用于追踪或识别的条码。这些条码可能是嵌入图像,也可能是矢量绘制图形。通过自动识别,可显著减少人工操作并提升数据处理效率。

本文将介绍两种方法,讲述如何使用 C# 从 PDF 中提取条码信息:一种是提取 PDF 页面中的嵌入图片后识别条码,另一种是将整个页面渲染为图像再进行识别。这两种方法都支持识别多种 1D 和 2D 条码类型。

环境准备

要在 C# 中实现 PDF 条码识别功能,你需要以下工具:

  • 支持 NuGet 包的 C# 项目环境(如 .NET Framework、.NET Core 或 .NET)。
  • 安装两个核心组件:Spire.Barcode for .NET(用于条码识别)和 Spire.PDF for .NET(用于 PDF 处理)。

Spire.PDF for .NET     Spire.Barcode for .NET

加入Spire技术交流QQ群(125237868),与更多开发者一起提升文档开发技能。

通过 NuGet 安装命令如下:

Install-Package Spire.Barcode
Install-Package Spire.PDF

如何在 C# 中读取 PDF 条码

下面将介绍两种方式从 PDF 中提取条码数据,可根据 PDF 文件中条码的具体类型选择合适的方法。

方法一:提取 PDF 图片并识别条码

适用于扫描类 PDF,通常每一页都包含条码图像。可通过 BarcodeScanner.ScanOne() 方法读取单个图像中的一个条码。

示例代码:
using Spire.Barcode;
using Spire.Pdf;
using Spire.Pdf.Utilities;
using System.Drawing;namespace ReadPDFBarcodeByExtracting
{class Program{static void Main(string[] args){// 载入PDF文件PdfDocument pdf = new PdfDocument();pdf.LoadFromFile("Sample.pdf");// 获取页面图片信息PdfPageBase page = pdf.Pages[0];PdfImageHelper imageHelper = new PdfImageHelper();PdfImageInfo[] imagesInfo = imageHelper.GetImagesInfo(page);// 遍历页面图片并读取条码信息int index = 0;foreach (PdfImageInfo imageInfo in imagesInfo){Image image = imageInfo.Image;string scanResult = BarcodeScanner.ScanOne((Bitmap)image);Console.WriteLine($"第 {index + 1} 个图像的扫描结果:\n" + scanResult + "\n");index++;}}}
}

以下图像展示了 PDF 页面截图与条码识别结果:

C# 提取 PDF 中嵌入图片并识别条码信息

适用场景:PDF 是扫描件或条码以图像形式嵌入时。

方法二:保存 PDF 页面为图像并识别条码

当条码是通过矢量方式绘制在 PDF 页面上(而非图片)时,可将页面渲染为图像,再识别其中的条码。此时使用 BarcodeScanner.Scan() 方法可识别多个条码。

示例代码:
using Spire.Barcode;
using Spire.Pdf;
using System.Drawing;namespace ReadPDFBarcodeByExtracting
{class Program{static void Main(string[] args){// 载入PDF文件PdfDocument pdf = new PdfDocument();pdf.LoadFromFile("Sample.pdf");// 遍历文档页面并保存页面为图像for (int i = 0; i < pdf.Pages.Count; i++){Image image = pdf.SaveAsImage(i);// 扫描识别图像中的所有二维码信息string[] scanResults = BarcodeScanner.Scan((Bitmap)image);for (int j = 0; j < scanResults.Length; j++){Console.WriteLine($"第 {i + 1} 页第 {j + 1} 个条码扫描结果:\n" + scanResults[j] + "\n");}}}}
}

下面展示的是使用方法二识别 PDF 页面中矢量条码的效果:

C# 保存 PDF 页面为图片并识别条码

适用场景:条码是以绘图形式嵌入页面,而非图片。

如何根据应用场景选择方法

PDF 文件来源多为扫描件或在线系统生成,条码既可能作为图像嵌入,也可能直接绘制在页面中,推荐根据实际情况灵活选择方法。建议在不确定文档结构时结合两种方法使用,以提升识别成功率。

使用场景推荐方法
扫描件或图像式条码提取嵌入图片并识别
数字 PDF、矢量绘制条码渲染整页图像再识别
混合内容或不确定结构可尝试结合两种方法使用

 总结

通过本教程,你可以使用 C# 从 PDF 中提取条码信息,无论条码是图像嵌入还是矢量绘制,两种方法都能为你提供稳定的识别结果。在数据自动化处理场景中,这将大幅提升效率与准确性。

常见问题解答

问:支持多页 PDF 吗?
答:支持。你可以循环处理 PDF 中的每一页,逐页识别条码。

问:能否识别每页多个条码?
答:可以。使用 BarcodeScanner.Scan() 方法可返回图像中所有检测到的条码。

问:提高识别精度的方法有哪些?
答:渲染页面时可设置更高 DPI,例如使用 SaveAsImage(int pageIndex, PdfImageType.Bitmap, int dpiX, int dpiY) 方法,推荐 300 DPI 以上。

http://www.lryc.cn/news/574614.html

相关文章:

  • 【数字后端】- 什么是NDR规则?
  • vscode打开.c文件后中文乱码
  • ros(一)使用消息传递图像+launch启动文件
  • 通过Prompt提示构建思维链
  • git操作练习(3)
  • WHAT - React Native 的 Expo Router
  • 华为云Flexus+DeepSeek征文|华为云ModelArts Studio:利用New API实现大模型网关与AI资产管理的无缝对接
  • 梳理React中的fiber架构
  • 学历信息查询API (IVYZ9A2B) 的对接实战 | 天远API
  • WPF/Net Core 简单显示PDF
  • WEB安全--Java安全--jsp webshell免杀1
  • 原子操作(CAS)
  • 【AI大模型】Spring AI 基于Redis实现对话持久存储详解
  • 打包上传到Linux部署并启动
  • 鸿蒙 FolderStack 组件全解析:折叠屏悬停布局开发指南
  • kvm console 的使用
  • linux网 络
  • 计算机基础和Java编程的练习题
  • 储能系统的离网,并网,构网,跟网 简介
  • 【HTTP】取消已发送的请求
  • Linux线程概念及常用接口(1)
  • OSS客户端签名直传实践:Web端安全上传TB级文件方案(含STS临时授权)
  • 从牛顿流体到弹性固体:旋转流变仪的高精度流变特性测定与工业应用
  • Unity_UI_NGUI_UI组件
  • 对人工智能的厌倦感是真实存在的,而且它给品牌带来的损失远不止是参与度的下降
  • 【Linux网络编程】多路转接I/O(一)select,poll
  • 51c嵌入式~电路~合集8
  • 一、永磁同步电机矢量控制——电机数学模型
  • 第十节 新特性与趋势-CSS层叠规则升级
  • AI智能化高效办公:WPS AI全场景深度应用指南