1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/raoyutian-paddle-ocrsharp

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README_en.md

Введение

Этот проект представляет собой модификацию и инкапсуляцию кода на 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 )

Вы можете оставить комментарий после Вход в систему

Введение

PaddleOCRSharp — это инструмент OCR для .NET, представляющий собой модифицированный и упакованный код C++, основанный на библиотеке PaddleOCR от Baidu. Это локальная библиотека, которую можно использовать в автономном режиме. Она включает функции распознавания текста, обнаружения текста и распознавания таблиц. Проект оптимизирован для случаев н... Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Язык

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/raoyutian-paddle-ocrsharp.git
git@api.gitlife.ru:oschina-mirror/raoyutian-paddle-ocrsharp.git
oschina-mirror
raoyutian-paddle-ocrsharp
raoyutian-paddle-ocrsharp
dev