OCR для PDF в среде .NET
Другие версии этого документа:
IronOCR - это программный компонент C#, позволяющий читать текст с изображений и PDF-документов на 126 языках, включая русский.
Это усовершенствованный форк Tesseract, созданный исключительно для разработчиков .NET и регулярно превосходящий другие движки Tesseract как по скорости, так и по точности.
Как скачать OCR для PDF
Пакет русского языка можно скачать здесь:
Как установить OCR
Первое, что нужно сделать, это установить пакет русского распознавания текста в ваш .NET-проект.
PM > Install-Package IronOCR.Languages.Russian
PM > Install-Package IronOCR.Languages.Russian
Пример кода
Этот пример кода читает русский текст с изображения / документа PDF.
// Установка пакета русского языка
// PM> Install-Package IronOCR.Languages.Russian
using IronOcr;
var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Russian;
// Открываем изображение для OCR
using (var Input = new OcrInput(@"images\Russian.png"))
{
// Чтение текста с изображения
var Result = Ocr.Read(Input);
var AllText = Result.Text;
// Вывод текста в консоль
Console.WriteLine(AllText);
}
// Установка пакета русского языка
// PM> Install-Package IronOCR.Languages.Russian
using IronOcr;
var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Russian;
// Открываем изображение для OCR
using (var Input = new OcrInput(@"images\Russian.png"))
{
// Чтение текста с изображения
var Result = Ocr.Read(Input);
var AllText = Result.Text;
// Вывод текста в консоль
Console.WriteLine(AllText);
}
' Установка пакета русского языка
' PM> Install-Package IronOCR.Languages.Russian
Imports IronOcr
Private Ocr = New IronTesseract()
Ocr.Language = OcrLanguage.Russian
' Открываем изображение для OCR
Using Input = New OcrInput("images\Russian.png")
' Чтение текста с изображения
Dim Result = Ocr.Read(Input)
Dim AllText = Result.Text
' Вывод текста в консоль
Console.WriteLine(AllText)
End Using
Почему разработчики C# выбирают IronOCR вместо Vanilla Tesseract?
IronOCR - это простая в установке программная библиотека .NET с подробной документацией.
IronOCR позволяет достичь точности оптического распознавания текста вплоть до 99,8%+ без использования каких-либо внешних веб-сервисов.
Другие плюсы:
- Простая установка
- В комплект входят Tesseract 5, 4 и 3.
- Точность 99,8%, что превосходит обычный Tesseract.
- Молниеносная скорость и многопоточность.
- Совместимость с MVC, WebApp, Desktop, Console и Server Application.
- Полная поддержка PDF OCR.
- Возможность работы почти с любыми изображениями или PDF файлами
- Полная поддержка .NET Core, Standard и FrameWork
- Поддержка Windows, Mac, Linux, Azure, Docker, Lambda, AWS
- Возможность считывать штрих-коды и QR-коды
- Экспорт OCR как XHTML документ
- Экспорт OCR в PDF-документы с возможностью поиска
- 126 международных языков, управление которыми осуществляется через файлы NuGet или OcrData.
- Возможность извлекать не только текст, но и изображения, координаты, статистику и шрифты.
- Может использоваться для распространения Tesseract OCR внутри коммерческих и проприетарных приложений.
Отлично подходит при работе с изображениями и несовершенными документами, например: фотографии, сканированные изображения с низким разрешением, документы с цифровым шумом и дефектами.
Другие бесплатные библиотеки OCR для платформы .NET, не так хороши в реальных случаях использования.
OCR с Tesseract 5 - примеры кода
В приведенном ниже примере кода показано, насколько легко читать текст с изображения с помощью C# или VB .NET.
using IronOcr;
var text = new IronTesseract().Read(@"img\Screenshot.png").Text;
Console.WriteLine(text);
using IronOcr;
var text = new IronTesseract().Read(@"img\Screenshot.png").Text;
Console.WriteLine(text);
Imports IronOcr
Private text = (New IronTesseract()).Read("img\Screenshot.png").Text
Console.WriteLine(text)
// Установка пакета русского языка
// PM> Install-Package IronOCR.Languages.Russian
using IronOcr;
var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Russian;
// Создаем входные данные для OCR
using (var Input = new OcrInput())
{
// Добавляем изображение для OCR
Input.AddImage("images/sample.jpeg");
// Вы можете добавить любое количество изображений
// Чтение текста с изображений
var Result = Ocr.Read(Input);
// Вывод текста в консоль
Console.WriteLine(Result.Text);
}
// Установка пакета русского языка
// PM> Install-Package IronOCR.Languages.Russian
using IronOcr;
var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Russian;
// Создаем входные данные для OCR
using (var Input = new OcrInput())
{
// Добавляем изображение для OCR
Input.AddImage("images/sample.jpeg");
// Вы можете добавить любое количество изображений
// Чтение текста с изображений
var Result = Ocr.Read(Input);
// Вывод текста в консоль
Console.WriteLine(Result.Text);
}
' Установка пакета русского языка
' PM> Install-Package IronOCR.Languages.Russian
Imports IronOcr
Private Ocr = New IronTesseract()
Ocr.Language = OcrLanguage.Russian
' Создаем входные данные для OCR
Using Input = New OcrInput()
' Добавляем изображение для OCR
Input.AddImage("images/sample.jpeg")
' Вы можете добавить любое количество изображений
' Чтение текста с изображений
Dim Result = Ocr.Read(Input)
' Вывод текста в консоль
Console.WriteLine(Result.Text)
End Using
C#PDF OCR
Тот же подход можно аналогичным образом использовать для извлечения текста из любого документа PDF.
using IronOcr;
var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Russian;
using (var input = new OcrInput())
{
// Добавляем PDF-документ с опциональным паролем
input.AddPdf("example.pdf", "password");
// Чтение текста с PDF
var Result = Ocr.Read(input);
// Вывод текста и количества страниц
Console.WriteLine(Result.Text);
Console.WriteLine($"{Result.Pages.Count()} Pages"); // 1 страница на каждую страницу PDF
}
using IronOcr;
var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Russian;
using (var input = new OcrInput())
{
// Добавляем PDF-документ с опциональным паролем
input.AddPdf("example.pdf", "password");
// Чтение текста с PDF
var Result = Ocr.Read(input);
// Вывод текста и количества страниц
Console.WriteLine(Result.Text);
Console.WriteLine($"{Result.Pages.Count()} Pages"); // 1 страница на каждую страницу PDF
}
Imports IronOcr
Private Ocr = New IronTesseract()
Ocr.Language = OcrLanguage.Russian
Using input = New OcrInput()
' Добавляем PDF-документ с опциональным паролем
input.AddPdf("example.pdf", "password")
' Чтение текста с PDF
Dim Result = Ocr.Read(input)
' Вывод текста и количества страниц
Console.WriteLine(Result.Text)
Console.WriteLine($"{Result.Pages.Count()} Pages") ' 1 страница на каждую страницу PDF
End Using
OCR для многостраничных файлов TIFF
OCR Чтение формата файлов TIFF. Этот формат также можно преобразовать непосредственно в файл PDF с возможностью поиска текста.
using IronOcr;
var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Russian;
using (var Input = new OcrInput())
{
// Добавляем многокадровый TIFF для OCR
Input.AddMultiFrameTiff("multi-frame.tiff");
// Чтение текста с TIFF
var Result = Ocr.Read(Input);
// Вывод текста в консоль
Console.WriteLine(Result.Text);
}
using IronOcr;
var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Russian;
using (var Input = new OcrInput())
{
// Добавляем многокадровый TIFF для OCR
Input.AddMultiFrameTiff("multi-frame.tiff");
// Чтение текста с TIFF
var Result = Ocr.Read(Input);
// Вывод текста в консоль
Console.WriteLine(Result.Text);
}
Imports IronOcr
Private Ocr = New IronTesseract()
Ocr.Language = OcrLanguage.Russian
Using Input = New OcrInput()
' Добавляем многокадровый TIFF для OCR
Input.AddMultiFrameTiff("multi-frame.tiff")
' Чтение текста с TIFF
Dim Result = Ocr.Read(Input)
' Вывод текста в консоль
Console.WriteLine(Result.Text)
End Using
Штрих-коды и QR
Уникальной особенностью IronOCR является то, что он может считывать штрих-коды и QR-коды из документов во время сканирования текста. Экземпляры класса OcrResult.OcrBarcode
предоставляют разработчику подробную информацию о каждом сканированном штрих-коде.
using IronOcr;
var Ocr = new IronTesseract();
Ocr.Configuration.ReadBarCodes = true;
using (var input = new OcrInput())
{
// Добавляем изображение, содержащее штрих-коды
input.AddImage("img/Barcode.png");
// Чтение текста вместе с всканированными штрих-кодами
var Result = Ocr.Read(input);
// Проходим по всем всканированным штрих-кодам
foreach (var Barcode in Result.Barcodes)
{
// Вывод значения штрих-кода
Console.WriteLine(Barcode.Value);
// доступны свойства типа и местоположения
}
}
using IronOcr;
var Ocr = new IronTesseract();
Ocr.Configuration.ReadBarCodes = true;
using (var input = new OcrInput())
{
// Добавляем изображение, содержащее штрих-коды
input.AddImage("img/Barcode.png");
// Чтение текста вместе с всканированными штрих-кодами
var Result = Ocr.Read(input);
// Проходим по всем всканированным штрих-кодам
foreach (var Barcode in Result.Barcodes)
{
// Вывод значения штрих-кода
Console.WriteLine(Barcode.Value);
// доступны свойства типа и местоположения
}
}
Imports IronOcr
Private Ocr = New IronTesseract()
Ocr.Configuration.ReadBarCodes = True
Using input = New OcrInput()
' Добавляем изображение, содержащее штрих-коды
input.AddImage("img/Barcode.png")
' Чтение текста вместе с всканированными штрих-кодами
Dim Result = Ocr.Read(input)
' Проходим по всем всканированным штрих-кодам
For Each Barcode In Result.Barcodes
' Вывод значения штрих-кода
Console.WriteLine(Barcode.Value)
' доступны свойства типа и местоположения
Next Barcode
End Using
Распознавание части документа
Все методы сканирования и чтения IronOCR предоставляют возможность точно указать, с какой части страницы мы хотим прочитать текст. Это очень полезно, когда мы рассматриваем стандартизованные формы.
Чтобы использовать области обрезки, нам нужно добавить системную ссылку на System.Drawing
, чтобы мы могли использовать объект System.Drawing.Rectangle
.
using IronOcr;
using System.Drawing;
var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Russian;
using (var Input = new OcrInput())
{
// Определяем область сканирования в пикселях
var ContentArea = new Rectangle { X = 215, Y = 1250, Height = 280, Width = 1335 };
// Добавляем изображение и определяем область сканирования
Input.Add("document.png", ContentArea);
// Чтение текста в указанной области
var Result = Ocr.Read(Input);
// Вывод текста в консоль
Console.WriteLine(Result.Text);
}
using IronOcr;
using System.Drawing;
var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Russian;
using (var Input = new OcrInput())
{
// Определяем область сканирования в пикселях
var ContentArea = new Rectangle { X = 215, Y = 1250, Height = 280, Width = 1335 };
// Добавляем изображение и определяем область сканирования
Input.Add("document.png", ContentArea);
// Чтение текста в указанной области
var Result = Ocr.Read(Input);
// Вывод текста в консоль
Console.WriteLine(Result.Text);
}
Imports IronOcr
Imports System.Drawing
Private Ocr = New IronTesseract()
Ocr.Language = OcrLanguage.Russian
Using Input = New OcrInput()
' Определяем область сканирования в пикселях
Dim ContentArea = New Rectangle With {
.X = 215,
.Y = 1250,
.Height = 280,
.Width = 1335
}
' Добавляем изображение и определяем область сканирования
Input.Add("document.png", ContentArea)
' Чтение текста в указанной области
Dim Result = Ocr.Read(Input)
' Вывод текста в консоль
Console.WriteLine(Result.Text)
End Using
Распознавание сканирования низкого качества
Класс IronOCR OcrInput
может исправить сканирование, которое обычный Tesseract не может прочитать.
using IronOcr;
var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Russian;
using (var Input = new OcrInput(@"img\Potter.LowQuality.tiff"))
{
// Устраняет цифровой шум и плохое сканирование
Input.DeNoise();
// Исправляет вращение и перспективу
Input.Deskew();
// Чтение текста
var Result = Ocr.Read(Input);
// Вывод текста в консоль
Console.WriteLine(Result.Text);
}
using IronOcr;
var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Russian;
using (var Input = new OcrInput(@"img\Potter.LowQuality.tiff"))
{
// Устраняет цифровой шум и плохое сканирование
Input.DeNoise();
// Исправляет вращение и перспективу
Input.Deskew();
// Чтение текста
var Result = Ocr.Read(Input);
// Вывод текста в консоль
Console.WriteLine(Result.Text);
}
Imports IronOcr
Private Ocr = New IronTesseract()
Ocr.Language = OcrLanguage.Russian
Using Input = New OcrInput("img\Potter.LowQuality.tiff")
' Устраняет цифровой шум и плохое сканирование
Input.DeNoise()
' Исправляет вращение и перспективу
Input.Deskew()
' Чтение текста
Dim Result = Ocr.Read(Input)
' Вывод текста в консоль
Console.WriteLine(Result.Text)
End Using
Экспорт результатов распознавания в виде PDF-файла с возможностью поиска
Изображение в PDF с копируемыми текстовыми строками. Может индексироваться поисковыми системами и базами данных.
using IronOcr;
var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Russian;
using (var Input = new OcrInput())
{
Input.Title = "Quarterly Report";
// Добавляем изображения для обработки
Input.AddImage("image1.jpeg");
Input.AddImage("image2.png");
Input.AddImage("image3.gif");
// Чтение текста
var Result = Ocr.Read(Input);
// Сохранение результата в PDF с возможностью поиска
Result.SaveAsSearchablePdf("searchable.pdf");
}
using IronOcr;
var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Russian;
using (var Input = new OcrInput())
{
Input.Title = "Quarterly Report";
// Добавляем изображения для обработки
Input.AddImage("image1.jpeg");
Input.AddImage("image2.png");
Input.AddImage("image3.gif");
// Чтение текста
var Result = Ocr.Read(Input);
// Сохранение результата в PDF с возможностью поиска
Result.SaveAsSearchablePdf("searchable.pdf");
}
Imports IronOcr
Private Ocr = New IronTesseract()
Ocr.Language = OcrLanguage.Russian
Using Input = New OcrInput()
Input.Title = "Quarterly Report"
' Добавляем изображения для обработки
Input.AddImage("image1.jpeg")
Input.AddImage("image2.png")
Input.AddImage("image3.gif")
' Чтение текста
Dim Result = Ocr.Read(Input)
' Сохранение результата в PDF с возможностью поиска
Result.SaveAsSearchablePdf("searchable.pdf")
End Using
Преобразование TIFF в PDF с возможностью поиска
Преобразовывайте документ TIFF (или любую группу файлов изображений) непосредственно в PDF-файл с возможностью поиска, который может быть проиндексирован в интрасети, на веб-сайте и в поисковых системах Google.
using IronOcr;
var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Russian;
using (var Input = new OcrInput())
{
// Добавляем многокадровый TIFF для конвертации
Input.AddMultiFrameTiff("example.tiff");
// Сохранение результата в PDF с возможностью поиска
Ocr.Read(Input).SaveAsSearchablePdf("searchable.pdf");
}
using IronOcr;
var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Russian;
using (var Input = new OcrInput())
{
// Добавляем многокадровый TIFF для конвертации
Input.AddMultiFrameTiff("example.tiff");
// Сохранение результата в PDF с возможностью поиска
Ocr.Read(Input).SaveAsSearchablePdf("searchable.pdf");
}
Imports IronOcr
Private Ocr = New IronTesseract()
Ocr.Language = OcrLanguage.Russian
Using Input = New OcrInput()
' Добавляем многокадровый TIFF для конвертации
Input.AddMultiFrameTiff("example.tiff")
' Сохранение результата в PDF с возможностью поиска
Ocr.Read(Input).SaveAsSearchablePdf("searchable.pdf")
End Using
Экспорт результатов распознавания текста в формате HTML
Преобразование изображения OCR в XHTML.
using IronOcr;
var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Russian;
using (var Input = new OcrInput())
{
Input.Title = "Html Title";
// Добавляем изображение
Input.AddImage("image1.jpeg");
// Чтение текста
var Result = Ocr.Read(Input);
// Сохранение результата в HTML формате
Result.SaveAsHocrFile("results.html");
}
using IronOcr;
var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Russian;
using (var Input = new OcrInput())
{
Input.Title = "Html Title";
// Добавляем изображение
Input.AddImage("image1.jpeg");
// Чтение текста
var Result = Ocr.Read(Input);
// Сохранение результата в HTML формате
Result.SaveAsHocrFile("results.html");
}
Imports IronOcr
Private Ocr = New IronTesseract()
Ocr.Language = OcrLanguage.Russian
Using Input = New OcrInput()
Input.Title = "Html Title"
' Добавляем изображение
Input.AddImage("image1.jpeg")
' Чтение текста
Dim Result = Ocr.Read(Input)
' Сохранение результата в HTML формате
Result.SaveAsHocrFile("results.html")
End Using
Фильтры улучшения изображения OCR
IronOCR предоставляет уникальные фильтры для объектов OcrInput
для повышения производительности распознавания текста.
Пример кода улучшения изображения
Повышает качество входных изображений OCR для получения более качественных и быстрых результатов OCR.
using IronOcr;
var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Russian;
using (var Input = new OcrInput(@"LowQuality.jpeg"))
{
// Устраняет цифровой шум и плохое сканирование
Input.DeNoise();
// Исправляет вращение и перспективу
Input.Deskew();
// Чтение текста
var Result = Ocr.Read(Input);
// Вывод текста в консоль
Console.WriteLine(Result.Text);
}
using IronOcr;
var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Russian;
using (var Input = new OcrInput(@"LowQuality.jpeg"))
{
// Устраняет цифровой шум и плохое сканирование
Input.DeNoise();
// Исправляет вращение и перспективу
Input.Deskew();
// Чтение текста
var Result = Ocr.Read(Input);
// Вывод текста в консоль
Console.WriteLine(Result.Text);
}
Imports IronOcr
Private Ocr = New IronTesseract()
Ocr.Language = OcrLanguage.Russian
Using Input = New OcrInput("LowQuality.jpeg")
' Устраняет цифровой шум и плохое сканирование
Input.DeNoise()
' Исправляет вращение и перспективу
Input.Deskew()
' Чтение текста
Dim Result = Ocr.Read(Input)
' Вывод текста в консоль
Console.WriteLine(Result.Text)
End Using
Список фильтров изображений OCR
Входные фильтры для повышения производительности оптического распознавания текста, встроенные в IronOCR, включают:
OcrInput.Rotate (двойные градусы) - поворачивает изображения на определенное количество градусов по часовой стрелке. Для вращения против часовой стрелки используйте отрицательные числа.
OcrInput.Binarize () - этот фильтр изображения превращает каждый пиксель в черный или белый без средней основы. Может улучшить производительность распознавания текста в случаях очень низкого контраста текста по сравнению с фоном.
OcrInput.ToGrayScale () - этот фильтр изображения превращает каждый пиксель в оттенок серого. Маловероятно, чтобы улучшить точность распознавания, но может повысить скорость
OcrInput.Contrast () - автоматически увеличивает контраст. Этот фильтр часто улучшает скорость и точность распознавания текста при сканировании с низким контрастом.
OcrInput.DeNoise () - Удаляет цифровой шум. Этот фильтр следует использовать только там, где ожидается шум.
OcrInput.Invert () - инвертирует каждый цвет. Например, белый становится черным: черный становится белым.
OcrInput.Dilate () - Расширенная морфология. Расширение добавляет пиксели к границам объектов изображения. Напротив Эроде.
OcrInput.Erode () - Расширенная морфология. Эрозия удаляет пиксели на границах объекта, напротив Dilate.
OcrInput.Deskew () - поворачивает изображение так, чтобы оно было правильным и ортогональным. Это очень полезно для оптического распознавания символов, поскольку допуск Tesseract для перекоса сканирования может составлять всего 5 градусов.
OcrInput.DeepCleanBackgroundNoise () - Удаление сильного фонового шума. Используйте этот фильтр только в случае, если документ имеет сильный фоновый шум, так как этот фильтр может снизить точность распознавания чистых документов и требует больших затрат на ЦП.
OcrInput.EnhanceResolution - Повышает разрешение изображений низкого качества. Этот фильтр не часто требуется, поскольку OcrInput.MinimumDPI и OcrInput.TargetDPI автоматически перехватывают и разрешают входные данные с низким разрешением.
CleanBackgroundNoise. Это настройка, отнимающая некоторое время; тем не менее, это позволяет библиотеке автоматически очищать цифровой шум, скомканную бумагу и другие дефекты в цифровом изображении, которые в противном случае сделали бы его недоступным для чтения другими библиотеками OCR.
EnhanceContrast - это параметр, который заставляет IronOCR автоматически увеличивать контраст текста на фоне изображения, повышая точность OCR и в целом повышая производительность и скорость OCR.
EnhanceResolution - это параметр, который автоматически обнаруживает изображения с низким разрешением (которые меньше 275 dpi) и автоматически масштабирует изображение, а затем повышает резкость всего текста, чтобы его можно было идеально прочитать библиотекой OCR. Хотя эта операция сама по себе занимает много времени, она обычно сокращает общее время операции распознавания текста с изображением.
Language IronOCR поддерживает 22 международных языковых пакета, и настройку языка можно использовать для выбора одного или нескольких языков, которые будут применяться для операции OCR.
Стратегия IronOCR поддерживает две стратегии. Мы можем выбрать либо быстрое и менее точное сканирование документа, либо использование продвинутой стратегии, которая использует некоторые модели искусственного интеллекта для автоматического повышения точности текста OCR, глядя на статистические отношения слов друг к другу в предложении.
ColorSpace - это настройка, с помощью которой мы можем выбрать OCR в оттенках серого или в цвете. Как правило, оттенки серого - лучший вариант. Однако иногда, когда есть текст или фон схожего оттенка, но очень разного цвета, полноцветное цветовое пространство дает лучшие результаты.
DetectWhiteTextOnDarkBackgrounds. Как правило, все библиотеки OCR ожидают увидеть черный текст на белом фоне. Этот параметр позволяет IronOCR автоматически обнаруживать негативы или темные страницы с белым текстом и читать их.
InputImageType. Этот параметр позволяет разработчику управлять библиотекой OCR относительно того, просматривает ли она полный документ или фрагмент, например снимок экрана.
RotateAndStraighten - это расширенная настройка, которая дает IronOCR уникальную возможность читать документы, которые не только повернуты, но, возможно, содержат перспективу, например фотографии текстовых документов.
ReadBarcodes - это полезная функция, которая позволяет IronOCR автоматически считывать штрих-коды и QR-коды на страницах, так же как и текст, без дополнительных затрат времени.
Глубина цвета. Этот параметр определяет, сколько битов на пиксель будет использовать библиотека OCR для определения глубины цвета. Более высокая глубина цвета может повысить качество распознавания текста, но также увеличит время, необходимое для завершения операции распознавания текста.
126 языковых пакетов
IronOCR поддерживает 126 международных языков через языковые пакеты, которые распространяются как библиотеки DLL, которые можно загрузить с этого веб-сайта или также из диспетчера пакетов NuGet.
Языки включают немецкий, французский, английский, китайский, японский и многие другие. Существуют специальные языковые пакеты для паспорта MRZ, чеков MICR, финансовых данных, номерных знаков и многого другого. Вы также можете использовать любой файл tesseract ".traineddata", включая те, которые вы создаете сами.
Пример языка
Использование других языков OCR.
using IronOcr;
// Установка пакета арабского языка
// PM> Install-Package IronOcr.Languages.Arabic
var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Arabic;
using (var input = new OcrInput())
{
// Добавляем изображение на арабском языке
input.AddImage("img/arabic.gif");
// Чтение текста
var Result = Ocr.Read(input);
// Консоль не может легко печатать арабский язык в Windows.
// Вместо этого сохраним на диск.
Result.SaveAsTextFile("arabic.txt");
}
using IronOcr;
// Установка пакета арабского языка
// PM> Install-Package IronOcr.Languages.Arabic
var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Arabic;
using (var input = new OcrInput())
{
// Добавляем изображение на арабском языке
input.AddImage("img/arabic.gif");
// Чтение текста
var Result = Ocr.Read(input);
// Консоль не может легко печатать арабский язык в Windows.
// Вместо этого сохраним на диск.
Result.SaveAsTextFile("arabic.txt");
}
Imports IronOcr
' Установка пакета арабского языка
' PM> Install-Package IronOcr.Languages.Arabic
Private Ocr = New IronTesseract()
Ocr.Language = OcrLanguage.Arabic
Using input = New OcrInput()
' Добавляем изображение на арабском языке
input.AddImage("img/arabic.gif")
' Чтение текста
Dim Result = Ocr.Read(input)
' Консоль не может легко печатать арабский язык в Windows.
' Вместо этого сохраним на диск.
Result.SaveAsTextFile("arabic.txt")
End Using
Пример нескольких языков
Также возможно OCR с использованием нескольких языков одновременно. Это действительно может помочь получить метаданные на английском языке и URL-адреса в документах Unicode.
using IronOcr;
// Установка пакета китайского языка
// PM> Install-Package IronOcr.Languages.ChineseSimplified
var Ocr = new IronTesseract();
// Устанавливаем основной и дополнительный языки
Ocr.Language = OcrLanguage.ChineseSimplified;
Ocr.AddSecondaryLanguage(OcrLanguage.Russian);
// Мы можем добавить любое количество языков
using (var input = new OcrInput())
{
// Добавляем PDF с несколькими языками
input.Add("multi-language.pdf");
// Чтение многоязычного текста
var Result = Ocr.Read(input);
// Сохранение результата в текстовый файл
Result.SaveAsTextFile("results.txt");
}
using IronOcr;
// Установка пакета китайского языка
// PM> Install-Package IronOcr.Languages.ChineseSimplified
var Ocr = new IronTesseract();
// Устанавливаем основной и дополнительный языки
Ocr.Language = OcrLanguage.ChineseSimplified;
Ocr.AddSecondaryLanguage(OcrLanguage.Russian);
// Мы можем добавить любое количество языков
using (var input = new OcrInput())
{
// Добавляем PDF с несколькими языками
input.Add("multi-language.pdf");
// Чтение многоязычного текста
var Result = Ocr.Read(input);
// Сохранение результата в текстовый файл
Result.SaveAsTextFile("results.txt");
}
Imports IronOcr
' Установка пакета китайского языка
' PM> Install-Package IronOcr.Languages.ChineseSimplified
Private Ocr = New IronTesseract()
' Устанавливаем основной и дополнительный языки
Ocr.Language = OcrLanguage.ChineseSimplified
Ocr.AddSecondaryLanguage(OcrLanguage.Russian)
' Мы можем добавить любое количество языков
Using input = New OcrInput()
' Добавляем PDF с несколькими языками
input.Add("multi-language.pdf")
' Чтение многоязычного текста
Dim Result = Ocr.Read(input)
' Сохранение результата в текстовый файл
Result.SaveAsTextFile("results.txt")
End Using
Объекты подробных результатов OCR
IronOCR возвращает объект результата OCR для каждой операции OCR. Как правило, разработчики используют свойство text этого объекта только для сканирования текста с изображения. Однако модель DOM результатов OCR намного более продвинута, чем это.
using IronOcr;
using System.Drawing; // Добавить ссылку на сборку
var Ocr = new IronTesseract();
// Настройки OCR
Ocr.Language = OcrLanguage.Russian;
Ocr.Configuration.EngineMode = TesseractEngineMode.TesseractAndLstm;
Ocr.Configuration.ReadBarCodes = true; //! Важный
using (var Input = new OcrInput(@"images\sample.tiff"))
{
// Чтение документа и получение результата
var Result = Ocr.Read(Input);
// Работа с результатами
var Pages = Result.Pages;
var Words = Pages[0].Words;
var Barcodes = Result.Barcodes;
// Изучение API для подробной информации:
// - Страницы, блоки, параграфы, строки, слова, символы
// - Экспорт изображений, координаты шрифтов, статистические данные
}
using IronOcr;
using System.Drawing; // Добавить ссылку на сборку
var Ocr = new IronTesseract();
// Настройки OCR
Ocr.Language = OcrLanguage.Russian;
Ocr.Configuration.EngineMode = TesseractEngineMode.TesseractAndLstm;
Ocr.Configuration.ReadBarCodes = true; //! Важный
using (var Input = new OcrInput(@"images\sample.tiff"))
{
// Чтение документа и получение результата
var Result = Ocr.Read(Input);
// Работа с результатами
var Pages = Result.Pages;
var Words = Pages[0].Words;
var Barcodes = Result.Barcodes;
// Изучение API для подробной информации:
// - Страницы, блоки, параграфы, строки, слова, символы
// - Экспорт изображений, координаты шрифтов, статистические данные
}
Imports IronOcr
Imports System.Drawing ' Добавить ссылку на сборку
Private Ocr = New IronTesseract()
' Настройки OCR
Ocr.Language = OcrLanguage.Russian
Ocr.Configuration.EngineMode = TesseractEngineMode.TesseractAndLstm
Ocr.Configuration.ReadBarCodes = True '! Важный
Using Input = New OcrInput("images\sample.tiff")
' Чтение документа и получение результата
Dim Result = Ocr.Read(Input)
' Работа с результатами
Dim Pages = Result.Pages
Dim Words = Pages(0).Words
Dim Barcodes = Result.Barcodes
' Изучение API для подробной информации:
' - Страницы, блоки, параграфы, строки, слова, символы
' - Экспорт изображений, координаты шрифтов, статистические данные
End Using
IronOCR работает "из коробки" без необходимости настройки производительности или значительного изменения входных изображений.
Скорость IronOCR 2020+ до 10 раз быстрее и допускает на 250% меньше ошибок, чем предыдущие сборки.
Подробнее
Чтобы узнать больше об оптическом распознавании текста на C#, VB, F# или любом другом языке .NET, пожалуйста, прочтите наши руководства сообщества, которые дают реальные примеры того, как можно использовать IronOCR, и могут показать нюансы того, как извлечь максимум из этой библиотеки.
Также доступен полный справочник по объектам для разработчиков .NET.