Linux(Centos7)下进行OCR识别-pytesseract

一.环境准备

1.Leptonica 库安装与配置

Dart 复制代码
# 解压安装(一定要注意版本!!)

tar -zxvf leptonica-1.78.0.tar.gz

# 进入包文件夹

cd 你解压后的文件名

# 依次执行以下命令,进行程序编译,安装

./autogen.sh

./configure

make

make install

# 配置



# 修改profile

vim /etc/profile

# 添加信息 i

export LD_LIBRARY_PATH=/usr/local/lib

export LIBLEPT_HEADERSDIR=/usr/local/include

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

# 保存退出

# 刷新配置

source /etc/profile

2.tesseract 安装与配置

Dart 复制代码
#  下载(一定要注意版本!!)

wget http://www.XXX/tesseract-4.0.0.tar.gz

tar -xzvf tesseract-4.0.0.tar.gz

cd tesseract-5.2.0

./autogen.sh

./configure

make

make install

# 添加到环境变量



vim /etc/profile

# 添加以下字段:

PATH=$PATH:/usr/local/tesseract/bin

export PATH

export TESSDATA_PREFIX=/root/tessdata

export PATH=$PATH:$TESSDATA_PREFIX

# 刷新配置

source /etc/profile

3.升级GCC

没有源怎么办?更换源,先备份,然后新建文件

Dart 复制代码
yum install -y centos-release-scl

yum install devtoolset-8-gcc*

4.查看tesseract版本

Dart 复制代码
tesseract --version

# 查看可执行文件路径:

which tesseract

/usr/local/bin/tesseract

# 语言包存放位置

/usr/local/share/tessdata/

语言包下载(linux版本语言包)

二.测试代码

1.初步测试

测试代码:

python 复制代码
import pytesseract
from PIL import Image
import re
import cv2
import json

# 设置 Tesseract 路径(Windows需指定)
# pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
pytesseract.pytesseract.tesseract_cmd = r'D:\softwares\Tesseract-OCR\tesseract.exe' # 替换成你自己的程序路径

def extract_info_from_image(image_path):
    # 读取图片并预处理(灰度化、二值化)
    img = cv2.imread(image_path)
    # if img is None:
    #     print("错误:图像加载失败,请检查路径或文件格式")
    # else:
    #     gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    # _, thresh = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)
    
    # OCR 识别文本
    text = pytesseract.image_to_string(Image.fromarray(img), lang='chi_sim+eng')
    lines = [line.strip() for line in text.split('\n') if line.strip()]

    # 提取结构化数据,不同结果对应的处理不同,此处省略
    ######
    ######
    data = {}
    
    return data

# 调用函数并输出结果
result = extract_info_from_image("D:/pythonProjects/input_image/1.jpg")

测试结果:

2.测试精度低问题

数据增强,提高模型泛化性

3.解决Flask并发处理问题

方法一:使用gevent或eventlet库来在Flask中运行多线程

Dart 复制代码
pip install gevent  # 安装gevent

from gevent.pywsgi import WSGIServer   # flask启动脚本中新增导入包

server = WSGIServer(('0.0.0.0', 5000), app)   # 启动方式用WSGIServer

server.serve_forever()

方法二: 使用asyncio和aiohttp库来处理异步请求

Dart 复制代码
pip install aiohttp  # 安装包


# 示例代码
from aiohttp import web
from flask import Flask, jsonify
import asyncio

app = Flask(__name__)

@app.route('/')
def hello():
    return "Hello, World!"

async def init(loop):
    app_runner = web.AppRunner(app)
    await app_runner.setup()
    site = web.TCPSite(app_runner, '0.0.0.0', 5000)
    await site.start()

loop = asyncio.get_event_loop()
loop.run_until_complete(init(loop))
loop.run_forever()
相关推荐
薛定谔的猫-菜鸟程序员10 小时前
软件架构设计师开发资料大全(从入门到精通)
后端·python·系统架构·flask·架构设计师
hddata@17 小时前
字符切得准,文本溯得清——高维数据OCR字符分割专利获授权,赋能多行业文本安全应用
安全·ocr
楚识科技19 小时前
企业级 OCR 选型指南:从 API 调用到私有化部署的技术对比
ocr
开开心心就好20 小时前
网页图片批量下载工具,输入链接就保存
服务器·算法·leetcode·支持向量机·pdf·ocr·1024程序员节
土星云SaturnCloud21 小时前
基于 PP-OCR 的车牌识别:从数据整理到土星云 SE110S 系列边缘部署
人工智能·ai·ocr·边缘计算
SEO-狼术2 天前
Aspose.OCR for .NET v26 Crack
ocr
lingxiao168882 天前
Halcon之OCR应用
人工智能·ocr
开开心心就好3 天前
音频降噪剪辑工具,音量裁剪一键处理
运维·服务器·前端·spring·ocr·音视频·1024程序员节
开开心心就好3 天前
竖式除法出题工具,整除余数混合模式
运维·服务器·前端·javascript·ocr·perl·1024程序员节
椒颜皮皮虾྅3 天前
让 C# 读懂整张图:DeploySharp 驱动 PaddleOCR v4/v5/v6,打通 OCR 全流程
开发语言·人工智能·深度学习·学习·c#·ocr·cuda