You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在C#与ASPMaker中,如何对未保存的预览图片使用Tesseract识别?

处理预览状态图片的Tesseract OCR识别方案

预览状态的图片本质是内存中的二进制数据,无需保存到本地磁盘,直接将这些数据传入Tesseract即可完成识别。以下分前端、后端两种常见场景给出实现方案:

前端场景(浏览器端上传预览)

当用户在浏览器选择图片后,会得到一个File对象(预览状态),直接使用Tesseract.js处理该对象即可:

// 引入Tesseract.js(可通过CDN或npm安装)
import Tesseract from 'tesseract.js';

// 获取文件选择器DOM元素
const fileInput = document.getElementById('image-upload');

fileInput.addEventListener('change', async (e) => {
  const file = e.target.files[0];
  if (!file) return;

  // 直接传入File对象进行识别
  const { data: { text } } = await Tesseract.recognize(
    file,
    'eng', // 识别语言,中文可改为'chi_sim'
    { logger: m => console.log(m) } // 可选,打印识别进度
  );

  console.log('识别结果:', text);
  // 后续可将结果展示到页面或提交至后端
});

Tesseract.js原生支持File、Blob、Canvas等内存中的图像对象,无需转存本地文件。

后端场景(接收前端上传的数据流)

如果是后端接收前端通过FormData提交的图片二进制流,可直接读取内存数据处理,无需写入磁盘。以Python Flask为例:

from flask import Flask, request
import pytesseract
from PIL import Image
import io

app = Flask(__name__)

# 若Tesseract未加入系统环境变量,需手动配置路径
# pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

@app.route('/upload-ocr', methods=['POST'])
def upload_ocr():
    image_file = request.files.get('image')
    if not image_file:
        return {'error': '未上传图片'}, 400

    # 将二进制流读入PIL Image,跳过磁盘存储步骤
    image = Image.open(io.BytesIO(image_file.read()))

    # 调用Tesseract识别
    text = pytesseract.image_to_string(image, lang='eng') # 中文识别改用'chi_sim'

    return {'result': text}

if __name__ == '__main__':
    app.run(debug=True)

关键注意点

  • 确保Tesseract已安装对应语言包(比如中文识别需要安装chi_sim.traineddata)
  • 前端处理大图片时建议先压缩,避免浏览器性能卡顿
  • 后端需注意图片格式兼容,PIL/Pillow支持JPG、PNG等绝大多数常见格式

内容的提问来源于stack exchange,提问作者Servasio Guntur Mandayu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 15:52:14