引言

OCR技术简介

React项目搭建

1. 创建React项目

首先,使用create-react-app命令创建一个新的React项目。

npx create-react-app react-ocr
cd react-ocr

2. 安装依赖

安装必要的依赖,如axios用于网络请求和react-dropzone用于文件上传。

npm install axios react-dropzone

集成OCR服务

选择一个OCR服务提供商,如Tesseract OCR、Google Cloud Vision API等。以下以Tesseract OCR为例进行介绍。

1. 安装Tesseract OCR

在服务器上安装Tesseract OCR。

sudo apt-get install tesseract-ocr

2. 创建OCR服务端

使用Node.js创建一个简单的服务端,用于处理OCR请求。

// ocr.js
const express = require('express');
const { createWorker } = require('tesseract.js');

const app = express();
const worker = createWorker();

app.post('/ocr', async (req, res) => {
  const { image } = req.files;
  const { tempFilePath } = image;

  await worker.load();
  await worker.loadLanguage('eng');
  await worker.initialize();

  const { data } = await worker.recognize(tempFilePath);

  res.json(data.text);
});

app.listen(5000, () => {
  console.log('OCR service running on http://localhost:5000');
});

React组件实现

1. 创建React组件

创建一个名为OCR的React组件。

// OCR.js
import React, { useState } from 'react';
import axios from 'axios';
import Dropzone from 'react-dropzone';

const OCR = () => {
  const [text, setText] = useState('');
  const [file, setFile] = useState(null);

  const onDrop = (acceptedFiles) => {
    setFile(acceptedFiles[0]);
  };

  const onOCR = async () => {
    if (file) {
      const formData = new FormData();
      formData.append('image', file);

      try {
        const response = await axios.post('http://localhost:5000/ocr', formData);
        setText(response.data.text);
      } catch (error) {
        console.error(error);
      }
    }
  };

  return (
    <div>
      <Dropzone onDrop={onDrop}>
        <p>Drop an image here, or click to select one</p>
      </Dropzone>
      <button onClick={onOCR}>OCR</button>
      <pre>{text}</pre>
    </div>
  );
};

export default OCR;

2. 使用组件

App.js中使用OCR组件。

// App.js
import React from 'react';
import OCR from './OCR';

function App() {
  return (
    <div>
      <h1>React OCR Example</h1>
      <OCR />
    </div>
  );
}

export default App;

总结