Этот проект представляет собой модификацию и инкапсуляцию кода на C++, основанную на библиотеке классов инструментов Baidu PaddleOCR. Он включает функцию распознавания таблиц, распознавание текста, обнаружение текста и статистический анализ на основе результатов обнаружения текста. В то же время он оптимизирован для повышения точности распознавания в случае неточного распознавания небольших изображений. Он содержит сверхлёгкий китайский OCR с общим размером модели всего 8,6 М. Одна модель поддерживает распознавание китайских и английских цифр, вертикальное распознавание текста и распознавание длинного текста. Поддерживает одновременное обнаружение нескольких текстов.
Инкапсуляция проекта чрезвычайно упрощена, и фактический вызов составляет всего несколько строк кода, что значительно облегчает использование разработчиками среднего и нижнего уровня и снижает уровень входа в paddleocr. В то же время предоставляются различные функции Net framework для облегчения разработки и развёртывания приложений в различных отраслях. Nuget пакет — это высокоточный китайский и английский OCR, который можно установить и использовать немедленно, его можно развернуть в автономном режиме, и его можно распознать без сети.
Файл DLL Paddleocr представляет собой динамическую библиотеку C++, модифицированную из кода открытого исходного проекта PaddleOCR и скомпилированную на основе x64 OpenCV.
Этот проект может быть скомпилирован и использован только на процессоре x64, поэтому 32-разрядная версия не поддерживается.
В настоящее время платформа Linux не поддерживается. Если есть требования к кроссплатформенности, пожалуйста, обратитесь к systen Drawing. dll, Systen. Drawing. Common. DLL ссылка удалена и перекомпилирована.
Проект в настоящее время поддерживает следующие сетевые фреймворки:
net35;net40;net45;net451;net452;net46;net461;net462;net47;net471;net472;net48;
netstandard2.0;netcoreapp3.1;
net5.0;net6.0;net7.0;
Библиотека моделей распознавания OCR поддерживает как официальные модели, так и самообучаемые модели. Мост полностью соответствует интерфейсу OCR.
Проект развёртывает собственную облегчённую версию библиотеки моделей 8.6m и библиотеку моделей серверной версии (более точную, которую необходимо загрузить). Библиотеку моделей можно изменить в соответствии с реальными потребностями.
Адрес для скачивания моделей PaddleOCR: https://gitee.com/paddlepaddle/PaddleOCR/blob/dygraph/doc/doc_ch/models_list.md
Если необходимо преобразовать его в библиотеку моделей серверной версии, справочный код выглядит следующим образом (предполагается, что библиотека моделей серверной версии находится в папке inforenceserver рабочего каталога):
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";
if (ofd.ShowDialog() != DialogResult.OK) return;
var imagebyte = File.ReadAllBytes(ofd.FileName);
Bitmap bitmap = new Bitmap(new MemoryStream(imagebyte));
//С облегчённой китайской и английской моделью
// OCRModelConfig config = null;
//Серверная китайская и английская модель
//OCRModelConfig config = new OCRModelConfig();
//string root = Environment.CurrentDirectory;
//string modelPathroot = root + @"\inferenceserver";
//config.det_infer = modelPathroot + @"\ch_ppocr_server_v2.0_det_infer";
//config.cls_infer = modelPathroot + @"\ch_ppocr_mobile_v2.0_cls_infer";
//config.rec_infer = modelPathRoot + @"\ch_ppocr_server_v2.0_rec_infer";
//config.keys = modelPathroot + @"\ppocr_keys.txt";
//Английские и цифровые модели
OCRModelConfig config = new OCRModelConfig();
string root = Environment.CurrentDirectory;
string modelPathroot = root + @"\en";
config.det_infer = modelPathroot + @"\ch_PP-OCRv2_det_infer";
config.cls_infer = modelPathroot + @"\ch_ppocr_mobile_v2.0_cls_infer";
config.rec_infer = modelPathroot + @"\en_number_mobile_v2.0_rec_infer";
config.keys = modelPathroot + @"\en_dict.txt";
OCRParameter oCRParameter = new OCRParameter ();
OCRResult ocrResult = new OCRResult(); Программа может быть инициализирована один раз глобально. Нет необходимости инициализировать каждый раз при идентификации, что может легко привести к ошибкам в отчётах.
`PaddleOCREngine engine = new PaddleOCREngine(config, oCRParameter);`
`{`
`ocrResult = engine.DetectText(bitmap );`
`}`
Если `(ocrResult != null)`:
`MessageBox.Show(ocrResult.Text,"Recognition results");`
//Когда OCR больше не используется, пожалуйста, освободите paddlecrengine
## 2. Структура папок
PaddleOCRSharp //.NET библиотека PaddleOCRDemo //Демо-папка |--Cpp //Папка C++ |--PaddleOCRCppDemo //C++ демо |--PaddleOCRSharpDemo //.NET демо |--Python //Python демо |--Go //Go демо
## 3. Компиляция исходного кода
Что касается компиляции исходного кода, рекомендуется использовать версию vs2022. Если вы не можете скомпилировать, переключитесь на релиз, а затем вернитесь в режим отладки.
Если вы не можете выполнить компиляцию из-за проблемы с компиляцией фреймворка, измените файл paddleocrsharp \ paddleocrsharp Csproj и удалите фреймворк, недоступный на текущем компьютере. См. документацию Microsoft для конкретного описания фреймворков.
`<TargetFrameworks>`
net35;net40;net45;net451;net452;net46;net461;net462;net47;net471;net472;net48;
netstandard2.0;netcoreapp3.1;
net5.0;net6.0;net7.0;
</TargetFrameworks>
## 4. Пример .NET
OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = ".|.bmp;.jpg;.jpeg;.tiff;.tiff;.png"; if (ofd.ShowDialog() != DialogResult.OK) return; var imagebyte = File.ReadAllBytes(ofd.FileName); Bitmap bitmap = new Bitmap(new MemoryStream(imagebyte)); OCRModelConfig config = null; OCRParameter oCRParameter = new OCRParameter();
OCRResult ocrResult = new OCRResult();
//Рекомендуется, чтобы программа была инициализирована один раз глобально. Нет необходимости инициализировать каждый раз для идентификации, что легко может привести к ошибкам. PaddleOCREngine engine = new PaddleOCREngine(config, oCRParameter); { ocrResult = engine.DetectText(bitmap); } if (ocrResult != null) { MessageBox.Show(ocrResult.Text, "results"); }
Пример кода на C++: https://gitee.com/raoyutian/paddle-ocrsharp/blob/master/PaddleOCRDemo/PaddleOCRCppDemo/PaddleOCRCppDemo.cpp
## 5. Общие проблемы и решения
---------------------------------------------------------------------------------------------------------------------
### Если вам нравится, поставьте звезду.
### Группа QQ: 318860399
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )