ChineseOcr Lite Ncnn:高效轻量级中文OCR工具

news2024/11/15 21:49:46

目录结构

    • 前言
    • opencv编译
      • 编译命令
      • 编译结果
    • ncnn设置
    • OcrLiteNcnn编译
      • OcrLiteNcnn1.8.0源码下载
      • OcrLiteNcnn1.8.0源码编译
    • OCR图片文本识别测试
      • 编译文件测试命令
      • 编译文件测试输出
    • 模型下载
    • 相关链接

在这里插入图片描述

前言

ChineseOcr Lite Ncnn,超轻量级中文OCR PC Demo,支持ncnn推理;

opencv编译

编译命令

# 源码下载
git clone https://github.com/opencv/opencv.git
cd opencv
mkdir build && cd build
cmake ..
make -j4

编译结果

root@kaixuan-PC:/home/kaixuan/Desktop/ocr/ncnn# git clone https://github.com/opencv/opencv.git
正克隆到 'opencv'...
remote: Enumerating objects: 331436, done.
remote: Counting objects: 100% (230/230), done.
remote: Compressing objects: 100% (156/156), done.
remote: Total 331436 (delta 103), reused 153 (delta 69), pack-reused 331206
接收对象中: 100% (331436/331436), 521.32 MiB | 2.14 MiB/s, 完成.
处理 delta 中: 100% (231146/231146), 完成.
正在检出文件: 100% (7452/7452), 完成.
root@kaixuan-PC:/home/kaixuan/Desktop/ocr/ncnn# ls
opencv
root@kaixuan-PC:/home/kaixuan/Desktop/ocr/ncnn# cd opencv/
root@kaixuan-PC:/home/kaixuan/Desktop/ocr/ncnn/opencv# ls
3rdparty  apps	cmake  CMakeLists.txt  CONTRIBUTING.md	COPYRIGHT  data  doc  include  LICENSE	modules  platforms  README.md  samples	SECURITY.md
root@kaixuan-PC:/home/kaixuan/Desktop/ocr/ncnn/opencv# mkdir build && cd build
root@kaixuan-PC:/home/kaixuan/Desktop/ocr/ncnn/opencv/build# cmake ..
-- 'Release' build type is used by default. Use CMAKE_BUILD_TYPE to specify build type (Release or Debug)
-- The CXX compiler identification is GNU 8.3.0
-- The C compiler identification is GNU 8.3.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
...
...
...
long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -g  -O0 -DDEBUG -D_DEBUG
--     Linker flags (Release):      -Wl,--exclude-libs,libippicv.a -Wl,--exclude-libs,libippiw.a   -Wl,--gc-sections -Wl,--as-needed -Wl,--no-undefined  
--     Linker flags (Debug):        -Wl,--exclude-libs,libippicv.a -Wl,--exclude-libs,libippiw.a   -Wl,--gc-sections -Wl,--as-needed -Wl,--no-undefined  
--     ccache:                      NO
--     Precompiled headers:         NO
--     Extra dependencies:          dl m pthread rt
--     3rdparty dependencies:
-- 
--   OpenCV modules:
--     To be built:                 calib3d core dnn features2d flann gapi highgui imgcodecs imgproc ml objdetect photo stitching ts video videoio
--     Disabled:                    world
--     Disabled by dependency:      -
--     Unavailable:                 java python2 python3
--     Applications:                tests perf_tests apps
--     Documentation:               NO
--     Non-free algorithms:         NO
-- 
--   GUI:                           NONE
--     GTK+:                        NO
--     VTK support:                 NO
-- 
--   Media I/O: 
--     ZLib:                        zlib (ver 1.3.1)
--     JPEG:                        build-libjpeg-turbo (ver 2.1.3-62)
--       SIMD Support Request:      YES
--       SIMD Support:              NO
--     WEBP:                        build (ver encoder: 0x020f)
--     PNG:                         build (ver 1.6.37)
--     TIFF:                        build (ver 42 - 4.6.0)
--     JPEG 2000:                   build (ver 2.5.0)
--     OpenEXR:                     build (ver 2.3.0)
--     HDR:                         YES
--     SUNRASTER:                   YES
--     PXM:                         YES
--     PFM:                         YES
-- 
--   Video I/O:
--     DC1394:                      NO
--     FFMPEG:                      NO
--       avcodec:                   NO
--       avformat:                  NO
--       avutil:                    NO
--       swscale:                   NO
--       avresample:                NO
--     GStreamer:                   NO
--     v4l/v4l2:                    YES (linux/videodev2.h)
-- 
--   Parallel framework:            pthreads
-- 
--   Trace:                         YES (with Intel ITT)
-- 
--   Other third-party libraries:
--     Intel IPP:                   2021.11.0 [2021.11.0]
--            at:                   /home/kaixuan/Desktop/ocr/ncnn/opencv/build/3rdparty/ippicv/ippicv_lnx/icv
--     Intel IPP IW:                sources (2021.11.0)
--               at:                /home/kaixuan/Desktop/ocr/ncnn/opencv/build/3rdparty/ippicv/ippicv_lnx/iw
--     VA:                          NO
--     Lapack:                      NO
--     Eigen:                       NO
--     Custom HAL:                  NO
--     Protobuf:                    build (3.19.1)
--     Flatbuffers:                 builtin/3rdparty (23.5.9)
-- 
--   OpenCL:                        YES (no extra features)
--     Include path:                /home/kaixuan/Desktop/ocr/ncnn/opencv/3rdparty/include/opencl/1.2
--     Link libraries:              Dynamic load
-- 
--   Python (for build):            /usr/bin/python3
-- 
--   Java:                          
--     ant:                         NO
--     Java:                        NO
--     JNI:                         NO
--     Java wrappers:               NO
--     Java tests:                  NO
-- 
--   Install to:                    /usr/local
-- -----------------------------------------------------------------
-- 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/kaixuan/Desktop/ocr/ncnn/opencv/build

ncnn设置

不同版本ncnn源码下载,ncnn文件存放路径;

OcrLiteNcnn/ncnn-static
├── NcnnWrapperConfig.cmake
├── linux
├── macos
├── windows-x64
└── windows-x86

OcrLiteNcnn编译

OcrLiteNcnn1.8.0源码下载

  1. 小编调整后的源码(百度云盘),提取码:5566下载,ncnn文件已配置好,可直接使用;
  2. OcrLiteNcnn不同版本源码下载;将ncnn文件存放到指定目录(参照"ncnn设置");
  1. Source code (tar.gz):linux源码;
  2. Source code (zip):windows源码;
  3. *.7z:编译好的不同平台可执行程序,没有特殊要求可直接使用;

OcrLiteNcnn1.8.0源码编译

root@kaixuan-PC:/home/kaixuan/Desktop/ocr# cd OcrLiteNcnn-1.8.0/
root@kaixuan-PC:/home/kaixuan/Desktop/ocr/OcrLiteNcnn-1.8.0# ./build.sh 
========请先参考README.md准备好编译环境========

========编译选项========
请输入编译选项并回车: 1)Release, 2)Debug
1
请选择要使用的ncnn库选项并回车: 1)ncnn(CPU),2)ncnn(vulkan)
1
请注意:如果选择2)JNI动态库时,必须安装配置Oracle JDK
请选择编译输出类型并回车: 1)BIN可执行文件,2)JNI动态库,3)C动态库
1
/home/kaixuan/Desktop/ocr/OcrLiteNcnn-1.8.0/Linux-BIN-CPU /home/kaixuan/Desktop/ocr/OcrLiteNcnn-1.8.0
cmake -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release -DOCR_OUTPUT=BIN -DOCR_VULKAN=CPU ..
-- The C compiler identification is GNU 8.3.0
-- The CXX compiler identification is GNU 8.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
配置Linux ncnn 路径: /home/kaixuan/Desktop/ocr/OcrLiteNcnn-1.8.0/ncnn-static/linux/lib/cmake/ncnn
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found Threads: TRUE  
-- ncnn Found!
配置Linux OpenCV 路径: /home/kaixuan/Desktop/ocr/OcrLiteNcnn-1.8.0/opencv-static/linux/lib/cmake/opencv4
-- Found OpenCV: /usr/local (found version "4.9.0") 
-- OpenCV_LIBS: opencv_calib3d;opencv_core;opencv_dnn;opencv_features2d;opencv_flann;opencv_gapi;opencv_highgui;opencv_imgcodecs;opencv_imgproc;opencv_ml;opencv_objdetect;opencv_photo;opencv_stitching;opencv_video;opencv_videoio
-- OpenCV_INCLUDE_DIRS: /usr/local/include/opencv4
-- Configuring done
-- Generating done
-- Build files have been written to: /home/kaixuan/Desktop/ocr/OcrLiteNcnn-1.8.0/Linux-BIN-CPU
Scanning dependencies of target benchmark
Scanning dependencies of target OcrLiteNcnn
[  9%] Building CXX object CMakeFiles/benchmark.dir/benchmark/benchmark.cpp.o
...
...
...
[100%] Built target OcrLiteNcnn
Install the project...
-- Install configuration: "Release"
-- Installing: /home/kaixuan/Desktop/ocr/OcrLiteNcnn-1.8.0/Linux-BIN-CPU/install/bin/OcrLiteNcnn
-- Set runtime path of "/home/kaixuan/Desktop/ocr/OcrLiteNcnn-1.8.0/Linux-BIN-CPU/install/bin/OcrLiteNcnn" to ""
-- Installing: /home/kaixuan/Desktop/ocr/OcrLiteNcnn-1.8.0/Linux-BIN-CPU/install/bin/benchmark
-- Set runtime path of "/home/kaixuan/Desktop/ocr/OcrLiteNcnn-1.8.0/Linux-BIN-CPU/install/bin/benchmark" to ""
/home/kaixuan/Desktop/ocr/OcrLiteNcnn-1.8.0
kaixuan@kaixuan-PC:~/Desktop/ocr/OcrLiteNcnn-1.8.0$ cd Linux-BIN-CPU/
kaixuan@kaixuan-PC:~/Desktop/ocr/OcrLiteNcnn-1.8.0/Linux-BIN-CPU$ ls
benchmark  CMakeCache.txt  CMakeFiles  cmake_install.cmake  install  install_manifest.txt  Makefile  OcrLiteNcnn

OCR图片文本识别测试

编译文件测试命令

./OcrLiteNcnn 
-d /home/kaixuan/Desktop/ocr/models-1.8 
-i /home/kaixuan/Desktop/ocr/1111.jpeg 
-f /home/kaixuan/Desktop/ocr/1212.txt

OcrLiteNcnn:编译结果文件
-d:模型文件所在目录
-i:需要识别的图片
-f:识别结果输出文件

编译文件测试输出

kaixuan@kaixuan-PC:~/Desktop/ocr/OcrLiteNcnn-1.8.0$ cd Linux-BIN-CPU/
kaixuan@kaixuan-PC:~/Desktop/ocr/OcrLiteNcnn-1.8.0/Linux-BIN-CPU$ ./OcrLiteNcnn -d /home/kaixuan/Desktop/ocr/models-1.8 -i /home/kaixuan/Desktop/ocr/1111.jpeg -f /home/kaixuan/Desktop/ocr/1212.txt
秘密10年
东海市文件
签发:
东文[2019129号
关于检测文件是否为模板的测试
第一条为了保护民事主体的合法权益,调整民事关
系,维护社会和经济秩序,适应中国特色社会主义发展要求,
弘扬社会主义核心价值观,根据宪法,制定本法。
第二条民法调整平等主体的自然人、法人和非法人组
织之间的人身关系和财产关系。
第三条 民事主体的人身权利、财产权利以及其他合法
权益受法律保护,任何组织或者个人不得侵犯。
第四条民事主体在民事活动中的法律地位一律平等。
第五条民事主体从事民事活动,应当遵循自愿原则
按照自己的意思设立、变更、终止民事法律关系
第六条 民事主体从事民事活动,应当遵循公平原则
合理确定各方的权利和义务。

模型下载

小编使用识别模型(OcrLiteNcnn-models-1.8.rar)

相关链接

  1. https://github.com/benjaminwan/OcrLiteNcnn
  2. https://github.com/benjaminwan/OcrLiteNcnn/releases

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1685465.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI率怎么降低?有哪些论文降重降AI率的工具和方法?

关于aigc降重怎么降重?论文降重有哪些方法?有没有好用的降重软件?网上很多大神都有回答,但是最近还是会有很多学弟学妹会问这些问题! 有没有发现论文降重像玄学一样复杂?最近刚完成一篇论文,使…

Python数据可视化(五)

实现GUI效果 借助 matplotlib,除可以绘制动画内容外,还可以实现用户图形界面的效果,也就是 GUI 效果。 GUI是用户使用界面的英文单词首字母的缩写。接下来,我们就以模块widgets中的类RadioButtons、 Cursor 和 CheckButtons 的使用…

说说什么是AOP,以及AOP的具体实现场景(外卖中应用)

推荐B站:【Spring AOP】实际开发中到底有什么用?_哔哩哔哩_bilibili 一、AOP的原理 AOP即Aspect Oriented Program,面向切面编程,是面向对象编程(OOP)的一种增强模式,可以将项目中与业务无关的,却为业务模…

Spark-广播变量详解

Spark概述 Spark-RDD概述 1.为什么会需要广播变量? 广播变量是为了在分布式计算环境中有效地向集群中的所有节点广播大型只读数据集而设计的。 在分布式环境中,通常会遇到需要在所有节点上使用相同的数据集的情况,但是将这些数据集复制到每个…

以及Spring中为什么会出现IOC容器?@Autowired和@Resource注解?

以及Spring中为什么会出现IOC容器?Autowired和Resource注解? IOC容器发展史 没有IOC容器之前 首先说一下在Spring之前,我们的程序里面是没有IOC容器的,这个时候我们如果想要得到一个事先已经定义的对象该怎么得到呢?…

数据结构(树)

1.树的概念和结构 树,顾名思义,它看起来像一棵树,是由n个结点组成的非线性的数据结构。 下面就是一颗树: 树的一些基本概念: 结点的度:一个结点含有的子树的个数称为该结点的度; 如上图&#…

Python | Leetcode Python题解之第107题二叉树的层序遍历II

题目: 题解: class Solution:def levelOrderBottom(self, root: TreeNode) -> List[List[int]]:levelOrder list()if not root:return levelOrderq collections.deque([root])while q:level list()size len(q)for _ in range(size):node q.popl…

夏天晚上热,早上凉怎么办?

温差太大容易引起感冒 1.定个大概3点的闹钟,起来盖被子。有些土豪可以开空调,我这个咸鱼没有空调。 2.空调调到合适的温度,比如20几度。

JAVA基础Day 1面向对象

目录 包调用包 对象和类多态继承重写与重载 抽象接口接口的声明接口的实现 包 package bao;class FreshJuice{enum FreshJuiceSize{small,medium,lager}FreshJuiceSize size; } public class aa {public static void main(String[] args) {System.out.println("hello&quo…

电子招投标系统源码实现与立项流程:基于Spring Boot、Mybatis、Redis和Layui的企业电子招采平台

随着企业的快速发展,招采管理逐渐成为企业运营中的重要环节。为了满足公司对内部招采管理提升的要求,建立一个公平、公开、公正的采购环境至关重要。在这个背景下,我们开发了一款电子招标采购软件,以最大限度地控制采购成本&#…

大数据量MySQL的分页查询优化

目录 造数据查看耗时优化方案总结 造数据 我用MySQL存储过程生成了100多万条数据&#xff0c;存储过程如下。 DELIMITER $$ USE test$$ DROP PROCEDURE IF EXISTS proc_user$$CREATE PROCEDURE proc_user() BEGINDECLARE i INT DEFAULT 1;WHILE i < 1000000 DOINSERT INT…

SpringBoot实现增量部署

目录&#xff1a; 1、使用背景2、实现流程3、部署增量包到项目中并启动4、说明 1、使用背景 最近发现公司发布版本时候&#xff0c;很齐全&#xff0c;接口文档&#xff0c;部署方式等都很好&#xff0c;其中有个增量部署包&#xff0c;有点兴趣&#xff0c;不清楚怎么生成增量…

【基于 PyTorch 的 Python 深度学习】9 目标检测与语义分割(1)

前言 文章性质&#xff1a;学习笔记 &#x1f4d6; 学习资料&#xff1a;吴茂贵《 Python 深度学习基于 PyTorch ( 第 2 版 ) 》【ISBN】978-7-111-71880-2 主要内容&#xff1a;根据学习资料撰写的学习笔记&#xff0c;该篇主要介绍了目标检测的相关概念及主要挑战。 第九章の…

大象资讯:PostgreSQL 17 Beta 1 发布!

↑ 关注“少安事务所”公众号&#xff0c;欢迎⭐收藏&#xff0c;不错过精彩内容~ PostgreSQL 全球开发小组 发布于 2024-05-23 PostgreSQL 全球开发小组宣布&#xff0c;PostgreSQL 17 的第一个测试版本现已可供下载。此版本包含 PostgreSQL 17 正式发布时将提供的所有功能的预…

工况数据导入MATLAB及数据复用

01--数据导入 之前在Matlab/Simulink的一些功能用法笔记&#xff08;二&#xff09;中有介绍过数据的导入到MATLAB工作区间 本次主要是想介绍下数据的复用 我们以NEDC工况数据为例&#xff1a; 通过下列3种方法进行导入&#xff1a; 1.通过导入Excel表数据&#xff0c;使用F…

WebRTC-SFU服务器-Janus部署【保姆级部署教程】

一、SFU WebRTC SFU(Selective Forwarding Unit)构架是一种通过服务器来路由和转发WebRTC客户端音视频数据流的方法。这种构架的核心特点是将服务器模拟成一个WebRTC的Peer客户端,从而实现了音视频流的直接转发。 在SFU构架中,服务器作为中心节点,但并不负责音视频流的混…

【AI副业教程】日赚5000+涨粉3000,自媒体新玩法!

​StartAI是一款专为设计师打造的基于Photoshop的AI工具&#xff0c;它提供了一系列强大的AI功能如&#xff1a;文生图、生成相似图、线稿上色、无损放大、局部重绘、扩图、艺术融合、提示词、智能擦除、风格选择等。https://www.istarry.com.cn/?sfromHGtsRq 你们能想象吗&a…

微服务实践k8sdapr开发部署调用

前置条件 安装docker与dapr: 手把手教你学Dapr - 3. 使用Dapr运行第一个.Net程序安装k8s dapr 自托管模式运行 新建一个webapi无权限项目 launchSettings.json中applicationUrl端口改成5001,如下: "applicationUrl": "http://localhost:5001" //Wea…

全网首发UNIAPP功能多的iapp后台源码

全网首发UNIAPP功能多的iapp后台源码&#xff0c;众所周知UN Dev Assist 后台是一款既不免费又不好用的后台今天直接分享。 搭建教程在里面了&#xff0c;自己查看。 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89291994 更多资源下载&#xff1a;…

汽车以太网发展现状及挑战

一、汽车以太网技术联盟 目前推动汽车以太网技术应用与发展的组织包括&#xff1a;OPEN Alliance&#xff08;One-Pair Ether-Net Alliance SIG&#xff09;联盟&#xff0c;主要致力于汽车以太网推广与使用&#xff0c;该联盟通过推进 BroadR- Reach 单对非屏蔽双绞线以太网传…