
OneOCR — скрытая OCR внутри Windows 11
AnSa8 9 минут назад OneOCR — скрытая OCR внутри Windows 11 Простой 7 мин 311 Windows * Машинное обучение * Обработка изображений * C * C++ * Туториал Из песочницы OneOCR — это набор из двух динамических библиотек и...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. AnSa8 9 минут назад OneOCR — скрытая OCR внутри Windows 11 Простой 7 мин 311 Windows * Машинное обучение * Обработка изображений * C * C++ * Туториал Из песочницы OneOCR — это набор из двух динамических библиотек и одной модели ONNX для распознавания текста в приложениях Snipping Tool и Photos в Windows 11. Скажу сразу: статьи писать я не умею, а воды лить не хочу, поэтому писанины будет немного. Итак, набор из трёх файлов состоит из: oneocr.
Microsoft официально не предоставляет документацию и API к библиотеке OneOCR. Первое упоминание о OneOCR встречается у пользователя github b1tg. Все остальные найденные источники ссылаются на него.
Технические детали
Не знаю точно в какой версии Windows появилась эта функция, но в 23H2 у Snipping Tool 11. Также эти библиотеки и ONNX модель есть и у приложения Photos. На момент написания статьи у меня в Windows 11 Pro 24H2 (26100.
8328) установлены версии Photos 2026. 0 и Snipping Tool 11. При чём версия onnxruntime.
dll у Snipping Tool старее (1. Модели также различаются по содержимомоу. Для примера я буду использовать ту, что посвежее.
Отраслевые последствия
Замечу, что OneOCR хорошо работает на CPU (даже на моём стареньком Intel Core i3-4170), хотя, судя по релизам onnxruntime и экспортируемой из oneocr. dll функции OcrProcessOptionsSetRunBackendModelOnCPU, может работать и на GPU, но, скажу сразу, задействовать GPU мне не удалось. Для минимального примера понадобится импортировать всего 5 функций:result_t CreateOcrPipeline( const char *, const char *, init_options_t, pipeline_t * ); result_t RunOcrPipeline( pipeline_t, const image_t *, process_options_t, instance_t * ); result_t GetOcrLineCount( instance_t, uint64_t * ); result_t GetOcrLine( instance_t, uint64_t, line_desc_t * ); result_t GetOcrLineContent( line_desc_t, const char ** );result_t — просто 32-битный целочисленный тип, хранящий код ошибки (всего их может быть 8, значения от 0 до 7, где 0 — это успешный результат).
init_options_t, process_options_t, pipeline_t, instance_t и line_desc_t — это указатели на внутренние структуры. Они «непрозрачны» и их содержимое по большому счету неизвестно, да нам оно и не особо-то и интересно, на самом деле. image_t — структура, хранящая информацию об изображении.
Информация о двух полях в этой структуре пока остаётся загадкой, но известно, какие значения они могут принимать и для примера этого хватит. Эксперименты показывают, что изображение должно быть в формате 32bpp (4 байта на пиксель). Причём порядок каналов RGB, как я понял, значения не имеет (ведь какая для ML-модели разница, какой будет текст, синий или красный?
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





