안녕하세요 여러분! 이 기사에서는 Node.js와 함께 AWS Rekognition을 사용하여 이미지 텍스트 감지를 수행하는 간단한 애플리케이션을 생성하겠습니다.
AWS Rekognition이란 무엇입니까?
Amazon Rekognition은 애플리케이션에 이미지 및 비디오 분석을 쉽게 추가할 수 있게 해주는 서비스입니다. 텍스트 감지, 얼굴 인식, 유명 인사 감지 등의 기능을 제공합니다.
Rekognition은 S3에 저장된 이미지나 비디오를 분석할 수 있지만, 이 튜토리얼에서는 작업을 단순하게 유지하기 위해 S3 없이 작업하겠습니다.
우리는 백엔드에 Express를 사용하고 프론트엔드에 React를 사용할 것입니다.
첫걸음
시작하기 전에 AWS 계정을 생성하고 IAM 사용자를 설정해야 합니다. 이미 갖고 계시다면 이 섹션을 건너뛰셔도 됩니다.
IAM 사용자 생성
aws-sdk 구성
프로젝트 디렉토리
my-directory/ │ ├── client/ │ └── src/ │ └── App.jsx │ └── public/ │ └── package.json │ └── ... (other React project files) │ └── server/ ├── index.js └── rekognition/ └── aws.rek.js
프런트엔드 설정
npm은 vite @latest를 만듭니다. -- --템플릿 반응
클라이언트 폴더에 반응 프로젝트가 생성됩니다.
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;
제출 후 이미지가 콘솔에 기록되는지 확인하여 이를 테스트해 보겠습니다.
이제 백엔드로 이동하여 이 프로젝트의 영혼을 만들어 보겠습니다.
백엔드 초기화
서버 폴더
npm init -y
npm install express cors nodemon multer @aws-sdk/client-rekognition
로직 분석을 처리하고 해당 폴더 안에 파일을 생성하기 위해 인식을 위한 별도의 폴더를 만들었습니다.
//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); } };
설명
API 생성
서버 폴더에서 index.js 파일이나 원하는 이름을 만드세요.
//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"); })
설명
프런트엔드로 돌아옴
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;
최종 출력
'이미지 업로드' 버튼을 클릭하면 백엔드가 이미지를 처리하고 감지된 텍스트를 반환한 다음 사용자에게 표시합니다.
전체 코드를 보려면 내 GitHub Repo를 확인하세요
감사합니다!!!
팔로우: Medium, GitHub, LinkedIn, X, Instagram
위 내용은 AWS Rekognition 및 Node.js를 사용하여 이미지에서 텍스트 감지의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!