Во-первых, какую версию Aspose.PDF и Aspose.Barcode вы используете? Поскольку я попробовал файл pdf на последнем штрих-коде Aspose.B (версия для разработки), он распознается хорошо.
string lFileName = @"d:\save\rec\merged.pdf";
var currentPageNumber = 0;
var barcodePageNumbers = new List<int>();
using (Aspose.Pdf.Facades.PdfConverter converter = new Aspose.Pdf.Facades.PdfConverter())
{
converter.BindPdf(lFileName);
converter.RenderingOptions.BarcodeOptimization = true;
converter.DoConvert();
while (converter.HasNextImage())
{
currentPageNumber++;
using (var ms = new MemoryStream())
{
converter.GetNextImage(ms);
ms.Seek(0L, SeekOrigin.Begin);
BarCodeReader reader = new BarCodeReader(ms, DecodeType.Code128);
while (reader.Read())
{
var text = reader.GetCodeText();
barcodePageNumbers.Add(currentPageNumber);
}
}
}
}
MessageBox.Show(string.Join(";", barcodePageNumbers.ToArray()));
Вот извлеченные изображения из файла PDF: page_2.tiff - полное изображение page2_cut.png - вырезать изображение. Оба хорошо распознаются.
Искажение изображения, которое вы видите на изображении, является проблемой соли и бумаги. Мы решаем эту проблему в большинстве случаев в модуле распознавания, но текущий модуль определения положения штрих-кода может помечать штрих-коды с таким сильным искажением соли и бумаги, как область без штрих-кода. В настоящее время у нас нет оптимизации для этого, но мы разрабатываем детектор SVM (машины опорных векторов), который лучше обнаруживает области штрих-кода, а также будет иметь возможности для оптимизации распознавания этих проблем. Детектор областей штрих-кода SVM будет добавлен в Aspose.Barcode в 2020Q1.
Текущий обходной путь для этого: если вы знаете возможную область штрих-кода, вы можете установить область распознавания штрих-кода с помощью SetBarCodeImage (значение Bitmap, область Rectangle) иэто помогает текущему градиентному детектору обнаруживать такие шумные области.