國產化條碼類庫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.pswp.cn/news/912218.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/912218.shtml
英文地址,請注明出處:http://en.pswp.cn/news/912218.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2023國賽數字取證-流量分析

數據取證 - 1 A 集團的?絡安全監控系統發現惡意份?正在實施?級可持續攻擊&#xff08;APT&#xff09;&#xff0c;并抓取了部分可疑流量包。請 您根據捕捉到的流量包&#xff0c;搜尋出?絡攻擊線索&#xff0c;分解出隱藏的惡意程序&#xff0c;并分析惡意程序的?為。 …

【預約小程序】-健身房預約課程小程序——仙盟創夢IDE

東方仙盟-坐擁萬個代碼 免費報表 阿雪技術觀 讓我們積極投身于技術共享的浪潮中&#xff0c;不僅僅是作為受益者&#xff0c;更要成為貢獻者。無論是分享自己的代碼、撰寫技術博客&#xff0c;還是參與開源項目的維護和改進&#xff0c;每一個小小的舉動都可能成為推動技術進…

SmartETL中數據庫操作與流程解耦的設計與應用

正如ETL這個概念本身所指示的&#xff0c;數據庫讀寫訪問是ETL的最常用甚至是最主要的操作。現代信息系統的設計與運行基本都是圍繞數據庫展開的&#xff0c;很多應用的核心功能都是對數據庫的CRUD&#xff08;創建、檢索、更新、刪除&#xff09;操作。 SmartETL框架設計之初…

【記錄解決問題】activiti--sql 轉義符設置

一、背景 %、&#xff01;、_在sql查詢時需要轉義&#xff0c;轉義的語法 like %?2% escape ?#{escapeCharacter()}二、activiti轉義配置 String wildcardEscapeClause ""; if (this.databaseWildcardEscapeCharacter ! null && this.databaseWildcard…

Unity AR構建維護系統的以AI驅動增強現實知識檢索系統

本博客概述了為維護開發的AI驅動增強現實&#xff08;AR&#xff09;知識檢索系統的開發過程&#xff0c;該系統集成了Unity用于AR、Python服務器用于后端處理&#xff0c;以及ChatGPT用于自然語言處理。該系統允許維護工人通過AR設備&#xff08;如HoloLens 2&#xff09;查詢…

Java面向對象核心:方法值傳遞與封裝機制精講

文章目錄 Java面向對象編程核心筆記一、方法值傳遞機制1. 基本數據類型傳遞2. 引用數據類型傳遞值傳遞總結 二、面向對象核心概念1. 類與對象關系2. 類定義規范3. 對象創建與使用 三、封裝機制詳解1. 封裝三大要素2. 封裝示例&#xff08;GirlFriend類&#xff09;3. 測試類4. …

【Actix Web】構建高性能 Rust API:Actix Web 最佳實踐與進階指南

目錄 一、高性能 API 架構設計1.1 系統架構圖1.2 核心組件 二、項目初始化與配置2.1 創建項目2.2 添加依賴 (Cargo.toml)2.3 配置文件 (config/default.toml) 三、核心模塊實現3.1 應用狀態管理 (src/state.rs)3.2 數據模型定義 (src/models.rs) 四、認證與授權系統4.1 JWT 認證…

vue項目中純前端實現導出pdf文件,不需要后端處理。

在 Vue 項目中&#xff0c;純前端實現導出 PDF 文件是完全可行的。通常可以借助一些 JavaScript 庫來將 HTML 內容或 DOM 元素轉換為 PDF 并下載&#xff0c;無需后端參與。 下面介紹幾種常用的方案和實現方法&#xff1a; 推薦方案&#xff1a;使用 html2canvas jsPDF 安裝…

c++虛擬內存

常見的內存困惑 當你編寫C程序時&#xff0c;是否遇到過&#xff1a; vector申請200MB內存&#xff0c;但系統顯示只占用20MB&#xff1f;程序在低配機器上崩潰&#xff0c;報出std::bad_alloc但內存顯示充裕&#xff1f;遍歷數組時特定位置耗時突然增加&#xff1f;相同代碼…

領域驅動設計(DDD)【22】之限定建模技術

文章目錄 一 限定初識二 限定識別三 限定實現 一 限定初識 一個 員工 可以擁有多份 工作經驗&#xff0c;而各個 工作經驗 的 時間段 不能相互重疊。可以得出一個推論&#xff1a;對于一個 員工 而言&#xff0c;每個 時間段 只能有一條 工作經驗。 UML中第二種表述方式&…

《P6492 [COCI 2010/2011 #6] STEP》

題目描述 給定一個長度為 n 的字符序列 a&#xff0c;初始時序列中全部都是字符 L。 有 q 次修改&#xff0c;每次給定一個 x&#xff0c;若 ax? 為 L&#xff0c;則將 ax? 修改成 R&#xff0c;否則將 ax? 修改成 L。 對于一個只含字符 L&#xff0c;R 的字符串 s&#…

macOS,切換 space 失效,向右切換space(move right a space) 失效

背景 準確來講&#xff0c;遇到的問題是向右切換space&#xff08;move right a space) 失效&#xff0c;并向左是成功的。 在鍵盤-快捷鍵-調度中心中&#xff0c;所有的快捷鍵均可用&#xff0c;但是“向右移動一個空間”總是失效。 已經檢查過不是快捷鍵沖突的問題&#x…

網飛貓官網入口 - 免費高清影視平臺,Netflix一站觀看

網飛貓是一個專注于提供豐富影視資源的在線平臺&#xff0c;涵蓋國內外熱門電影、電視劇、動漫、綜藝等多種類型。它不僅整合了Netflix的獨家內容&#xff0c;還提供了大量高清、藍光畫質的影視作品&#xff0c;支持多語言字幕&#xff0c;滿足不同用戶的觀影需求。網飛貓的界面…

Hyper-v-中的FnOs--飛牛Nas虛擬磁盤擴容(不清除數據)

在Hyper-v下的飛牛Nas要怎么在不刪除原有虛擬磁盤數據的情況下擴容呢 OK下面開始教學&#xff08;適用于Basic模式的虛擬磁盤擴容&#xff0c;Linear沒試過&#xff09; 先關閉飛牛Nas系統 找到飛牛Nas虛擬機&#xff0c;在設置下SCSI控制器找到要擴容的虛擬磁盤&#xff0c; 點…

掌握 MySQL 的基石:全面解讀數據類型及其影響

前言 上篇文章小編講述了關于MySQL表的DDL操作&#xff0c;在那里我多次使用了MySQL的數據類型&#xff0c;但是我并沒有去講述MySQL的數據類型&#xff0c;想必各位讀者已經很好奇MySQL的數據類型都有什么了&#xff0c;今天這篇文章我將會詳細的去講述MySQL的數據類型&#x…

buildadmin 如何制作自己的插件

官方文檔指引 提示&#xff1a;若不計劃發布到應用市場&#xff0c;可省略圖片等非必要功能 參考文檔&#xff1a;https://doc.buildadmin.com/senior/module/basicInfo.html 目錄 官方文檔指引開發說明模塊開發流程模塊包結構示例安裝開發工具 總結 開發說明 目標&#xff…

【數據標注師】關鍵點標注

目錄 一、 **關鍵點標注的四大核心原則**二、 **五階能力培養體系**? **階段1&#xff1a;基礎認知筑基&#xff08;1-2周&#xff09;**? **階段2&#xff1a;復雜場景處理技能? **階段3&#xff1a;三維空間標注&#xff08;進階&#xff09;**? **階段4&#xff1a;效率…

創建網站的基本步驟?如何建設自己的網站?

創建網站是一個系統化的過程&#xff0c;涵蓋規劃、設計、開發、測試和發布等多個階段。以下是詳細步驟及關鍵工具推薦&#xff1a; 一、規劃階段&#xff1a;明確目標與內容 定義目標 1、確定網站目的&#xff08;展示信息、銷售、博客、服務等&#xff09;。 2、分析目標…

FreeSWITCH配置文件解析(2) dialplan 撥號計劃中xml 的action解析

在 FreeSWITCH 的撥號計劃&#xff08;Dialplan&#xff09;中&#xff0c;使用 XML 配置。其中&#xff0c;<action> 標簽用于指定要執行的操作。這些操作通常是應用程序&#xff08;applications&#xff09;或設置變量等。下面列出常見的 <action> 類型及其含義…

MCPA2APPT:基于 A2A+MCP+ADK 的多智能體流式并發高質量 PPT 智能生成系統

&#x1f680; MCPA2APPT / MultiAgentPPT 集成 A2A MCP ADK 架構的智能化演示文稿生成系統&#xff0c;支持多智能體協作與流式并發&#xff0c;實時生成高質量 PPT 內容。 &#x1f9e0; 項目簡介 MultiAgentPPT&#xff08;又名 MCPA2APPT&#xff09;采用 A2A&#xff…