在.NET 8中读取条形码下的数字(不是条形码条纹本身)

问题描述 投票:0回答:1

我需要有关从 PDF 文件中读取条形码(不是条纹)下的数字的帮助。我的想法是将页面转换为图像,然后阅读它。

这是位于 PDF 文档右上角的条形码示例。 (https://i.sstatic.net/jtJl89rF.png)

我尝试使用 ZXing 尝试读取条形码下的数字,至少从图像中读取,但我没有运气。

 public static string ReadBarcodeFromImage(string filePath)
 {

     BarcodeReader barcodeReader = new BarcodeReader()
     {
         AutoRotate = true,
         Options =
         {
             TryHarder = true,
             TryInverted = true,  
         }
     };

     var bitmap = (Bitmap)Image.FromFile(filepath);
     var result = barcodeReader.Decode(bitmap);
     return result?.Text;
 }

然后我尝试使用 PdfiumViewer 将 pdf 页面转换为图像,并阅读它,但也没有成功:

public string ReadBarcodeFromPdf(string pdfPath)
{
        using (var document = PdfiumViewer.PdfDocument.Load(pdfPath))
        {

            // Render the first page
            using (var image = document.Render(0, 300, 300, true))
            {
                //ZXing
                BarcodeReader barcodeReader = new BarcodeReader()
                {
                    AutoRotate = true,
                    Options =
                    {
                        TryHarder = true,
                        TryInverted = true,
                    }
                };

                var result = barcodeReader.Decode((Bitmap)image);
                return result?.Text;
            }
        }
}
c# .net pdf
1个回答
0
投票

欢迎来到SO。

您可以使用开源 OCR 库 Tesseract 读取数字。

https://tesseract-ocr.github.io/tessdoc/Installation.html

根据所使用的语言模型和参数,您可能会得到略有不同的结果,但如果您只期望数字作为结果,您可以进一步解析/处理。 下面的命令行结果使用您的图像作为输入。 使用 ENG 和 DEU Fast 语言模型。快速、正常、最佳模型位于 https://github.com/tesseract-ocr

C:\Program Files\Tesseract-OCR>tesseract "d:\temp\jtJl89rF.png" stdout --tessdata-dir "C:\Program Files\Tesseract-OCR\tessdata" --psm 3 -l eng
(0123456789

C:\Program Files\Tesseract-OCR>tesseract "d:\temp\jtJl89rF.png" stdout --tessdata-dir "C:\Program Files\Tesseract-OCR\tessdata" --psm 3 -l deu
0123456789

提醒。 我并不建议这是最好的方法。 OCR 比读取条形码不太可靠,因为条形码有内部校验和。

提示#1:

您提到您首先要将 PDF 转换为图像。如果您的 PDF 是矢量文件(不是扫描文件),我相当确定提取文本并解析文本结果将提供更准确、更快的结果。如果您愿意分享具有代表性的 PDF,请随时

提示#2:

如果您可以控制条形码本身,请优先选择 QR 码。 ZXing 库可以比您的示例中的 1 个方向条形码更快、更可靠地检测和读取 QR 码。

© www.soinside.com 2019 - 2024. All rights reserved.