Hei semua! Dalam artikel ini, kami akan mencipta aplikasi mudah untuk melaksanakan pengesanan teks imej menggunakan Pengecaman AWS dengan Node.js.
Apakah itu AWS Recognition?
Amazon Recognition ialah perkhidmatan yang memudahkan untuk menambah analisis imej dan video pada aplikasi anda. Ia menawarkan ciri seperti pengesanan teks, pengecaman muka dan juga pengesanan selebriti.
Walaupun Recognition boleh menganalisis imej atau video yang disimpan dalam S3, untuk tutorial ini, kami akan berusaha tanpa S3 untuk memastikan perkara mudah.
Kami akan menggunakan Express untuk bahagian belakang dan React untuk bahagian hadapan.
Langkah Pertama
Sebelum kami bermula, anda perlu membuat akaun AWS dan menyediakan pengguna IAM. Jika anda sudah mempunyai ini, anda boleh melangkau bahagian ini.
Mencipta pengguna IAM
Mengkonfigurasi aws-sdk
Direktori Projek
my-directory/ │ ├── client/ │ └── src/ │ └── App.jsx │ └── public/ │ └── package.json │ └── ... (other React project files) │ └── server/ ├── index.js └── rekognition/ └── aws.rek.js
Menyediakan bahagian hadapan
npm buat vite @terkini . -- --template bertindak balas
ia akan mencipta projek tindak balas dalam folder klien.
Dalam App.jsx
import { useState } from "react"; function App() { const [img, setImg] = useState(null); const handleImg = (e) => { setImg(e.target.files[0]); // Store the selected image in state }; const handleSubmit = (e) => { e.preventDefault(); if (!img) return; const formData = new FormData(); formData.append("img", img); console.log(formData); // Log the form data to the console }; return ( <div> <form onSubmit={handleSubmit}> <input type="file" name="img" accept="image/*" onChange={handleImg} /> <br /> <button type="submit">Submit</button> </form> </div> ); } export default App;
Mari kita uji perkara ini dengan memastikan imej dilog masuk ke konsol selepas diserahkan.
Sekarang, Mari kita beralih ke bahagian belakang dan mula membuat jiwa, untuk projek ini.
Memulakan bahagian belakang
dalam folder pelayan
npm init -y
npm install express cors nodemon multer @aws-sdk/client-recognition
Saya telah mencipta folder berasingan untuk pengecaman, untuk mengendalikan logik menganalisis dan mencipta fail di dalam folder itu.
//aws.rek.js import { RekognitionClient, DetectTextCommand, } from "@aws-sdk/client-rekognition"; const client = new RekognitionClient({}); export const Reko = async (params) => { try { const command = new DetectTextCommand( { Image: { Bytes:params //we are using Bytes directly instead of S3 } } ); const response = await client.send(command); return response } catch (error) { console.log(error.message); } };
Penjelasan
Mencipta API
Dalam folder pelayan, cipta fail index.js atau nama yang anda mahukan.
//index.js import express from "express" import multer from "multer" import cors from "cors" import { Reko } from "./rekognition/aws.rek.js"; const app = express() app.use(cors()) const storage = multer.memoryStorage() const upload = multer() const texts = [] let data = [] app.post("/img", upload.single("img"), async(req,res) => { const file = req.file data = await Reko(file.buffer) data.TextDetections.map((item) => { texts.push(item.DetectedText) }) res.status(200).send(texts) }) app.listen(3000, () => { console.log("server started"); })
Penjelasan
Kembali ke bahagian hadapan
import axios from "axios"; import { useState } from "react"; import "./App.css"; function App() { const [img, setImg] = useState(null); const [pending, setPending] = useState(false); const [texts, setTexts] = useState([]); const handleImg = (e) => { setImg(e.target.files[0]); }; const handleSubmit = async (e) => { e.preventDefault(); if (!img) return; const formData = new FormData(); formData.append("img", img); try { setPending(true); const response = await axios.post("http://localhost:3000/img", formData); setTexts(response.data); } catch (error) { console.log("Error uploading image:", error); } finally { setPending(false); } }; return ( <div className="app-container"> <div className="form-container"> <form onSubmit={handleSubmit}> <input type="file" name="img" accept="image/*" onChange={handleImg} /> <br /> <button type="submit" disabled={pending}> {pending ? "Uploading..." : "Upload Image"} </button> </form> </div> <div className="result-container"> {pending && <h1>Loading...</h1>} {texts.length > 0 && ( <ul> {texts.map((text, index) => ( <li key={index}>{text}</li> ))} </ul> )} </div> </div> ); } export default App;
Output Akhir
Selepas mengklik butang "Muat Naik Imej", bahagian belakang memproses imej dan mengembalikan teks yang dikesan, yang kemudiannya dipaparkan kepada pengguna.
Untuk kod lengkap, lihat saya: GitHub Repo
Terima Kasih!!!
Ikuti saya di: Sederhana, GitHub, LinkedIn, X, Instagram
Atas ialah kandungan terperinci Pengesanan Teks dalam Imej Menggunakan AWS Recognition dan Node.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!