Hallo zusammen! In diesem Artikel erstellen wir eine einfache Anwendung zur Durchführung der Bildtexterkennung mithilfe von AWS Rekognition mit Node.js.
Was ist AWS Rekognition?
Amazon Rekognition ist ein Dienst, der es einfach macht, Ihren Anwendungen Bild- und Videoanalysen hinzuzufügen. Es bietet Funktionen wie Texterkennung, Gesichtserkennung und sogar die Erkennung von Prominenten.
Während Rekognition in S3 gespeicherte Bilder oder Videos analysieren kann, werden wir in diesem Tutorial zur Vereinfachung ohne S3 arbeiten.
Wir werden Express für das Backend und React für das Frontend verwenden.
Erste Schritte
Bevor wir beginnen, müssen Sie ein AWS-Konto erstellen und einen IAM-Benutzer einrichten. Wenn Sie diese bereits haben, können Sie diesen Abschnitt überspringen.
IAM-Benutzer erstellen
aws-sdk konfigurieren
Projektverzeichnis
my-directory/ │ ├── client/ │ └── src/ │ └── App.jsx │ └── public/ │ └── package.json │ └── ... (other React project files) │ └── server/ ├── index.js └── rekognition/ └── aws.rek.js
Frontend einrichten
npm create vite @latest . -- --template reagieren
Es wird das React-Projekt im Client-Ordner erstellt.
In der 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;
Testen wir dies, indem wir sicherstellen, dass das Bild nach dem Absenden in der Konsole protokolliert wird.
Jetzt gehen wir zum Backend über und beginnen mit der Erstellung der Seele für dieses Projekt.
Initialisierung des Backends
im Serverordner
npm init -y
npm install express cors nodemon multer @aws-sdk/client-rekognition
Ich habe einen separaten Ordner für die Erkennung erstellt, um die Analyselogik zu verwalten und eine Datei in diesem Ordner zu erstellen.
//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); } };
Erklärung
Erstellen der API
Erstellen Sie im Serverordner eine Datei index.js oder einen beliebigen Namen.
//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"); })
Erklärung
Zurück zum Frontend
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;
Endgültige Ausgabe
Nach dem Klicken auf die Schaltfläche „Bild hochladen“ verarbeitet das Backend das Bild und gibt den erkannten Text zurück, der dann dem Benutzer angezeigt wird.
Den vollständigen Code finden Sie in meinem: GitHub Repo
Vielen Dank!!!
Folgen Sie mir auf: Medium, GitHub, LinkedIn, X, Instagram
Das obige ist der detaillierte Inhalt vonTexterkennung in Bildern mit AWS Rekognition und Node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!