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()
相关推荐
mit6.8248 小时前
archived
后端·python·flask
10mAh9 小时前
【PaddleOCR】扫描版 PDF 无法复制、RAG 检索为空怎么解决?——OCR 解析与版面还原实战
前端·pdf·ocr
AI人工智能+10 小时前
智能文档抽取系统通过“视觉感知+大模型认知“双引擎架构,实现非结构化文档的自动化处理
深度学习·计算机视觉·语言模型·自然语言处理·ocr·文档抽取
mit6.8241 天前
AKS--Azure Managed Kubernetes
kubernetes·flask·azure
weixin_BYSJ19873 天前
springboot医疗信息管理系统---附源码17465
java·javascript·spring boot·python·django·flask·php
运维行者_4 天前
网络监控与ITSM集成:从告警到工单,实现运维自动化闭环
开发语言·网络·分布式·后端·架构·flask·php
zyplayer-doc4 天前
同一份制度别复制到多个知识库:用zyplayer-doc引用文档解决重复维护
javascript·人工智能·智能手机·开源·ocr
way_hj4 天前
Flask笔记(2)快速web项目
笔记·flask·vue·web
海盗12344 天前
微软技术日报——2026-08-07
python·microsoft·flask
zyplayer-doc4 天前
核心制度不该被随手修改:用zyplayer-doc锁定文档和全部子文档
大数据·数据库·人工智能·笔记·pdf·ocr