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并发处理问题

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

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

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

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

server.serve_forever()

方法二: 使用asyncioaiohttp库来处理异步请求

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()
相关推荐
文档伴侣6 小时前
体验访答:我的私有知识库新选择
人工智能·aigc·ocr
AI人工智能+7 小时前
大模型如何革新银行流水信息抽取
大模型·ocr·文本信息抽取
麦麦大数据8 小时前
F059 vue+flask酒店对比系统
前端·vue.js·flask·携程·酒店对比·飞猪·同程
TG:@yunlaoda360 云老大8 小时前
华为云国际站代理商OCR的多语种识别能力可以应用于哪些行业?
人工智能·华为云·ocr
TG:@yunlaoda360 云老大8 小时前
华为云国际站代理商OCR的多语种识别能力可以应用于哪些场景?
服务器·华为云·ocr
倔强的小石头_9 小时前
Python 从入门到实战(十四):Flask 用户认证(给 Web 应用加安全锁,区分管理员与普通用户)
前端·python·flask
TTGGGFF9 小时前
实用代码工具:Python打造PDF选区OCR / 截图批量处理工具(支持手动/全自动模式)
python·pdf·ocr
真·skysys20 小时前
【技术报告解读】DeepSeek-OCR: Contexts Optical Compression
ocr·多模态·deepseek·上下文工程·deepseek-ocr·上下文压缩·上下文光学压缩
曲幽1 天前
Flask登录验证实战:从零构建一个基础的账号密码登录系统
python·flask·web·session·username·login