Aktueller Stand

This commit is contained in:
Andreas Knuth 2024-11-27 12:44:46 +01:00
parent f70af3a59e
commit 2c7fbac29c
4 changed files with 21 additions and 18 deletions

View File

@ -9,10 +9,15 @@ export interface Deck {
} }
export interface DeckImage { export interface DeckImage {
image: string; boxes: Box[];
text: string; name: string;
}
export interface Box {
x1:number;
x2:number;
y1:number;
y2:number;
} }
@Injectable({ @Injectable({
providedIn: 'root' providedIn: 'root'
}) })
@ -24,7 +29,9 @@ export class DeckService {
getDecks(): Observable<Deck[]> { getDecks(): Observable<Deck[]> {
return this.http.get<Deck[]>(this.apiUrl); return this.http.get<Deck[]>(this.apiUrl);
} }
getImage(name:string): Observable<DeckImage> {
return this.http.get<DeckImage>(`${this.apiUrl}/image/${name}`);
}
createDeck(deckname: string): Observable<any> { createDeck(deckname: string): Observable<any> {
return this.http.post(this.apiUrl, { deckname }); return this.http.post(this.apiUrl, { deckname });
} }
@ -33,10 +40,7 @@ export class DeckService {
return this.http.delete(`${this.apiUrl}/${encodeURIComponent(deckName)}`); return this.http.delete(`${this.apiUrl}/${encodeURIComponent(deckName)}`);
} }
uploadImage(deckName: string, image: File, text: string): Observable<any> { saveImageData(data:any): Observable<any> {
const formData = new FormData(); return this.http.post(`${this.apiUrl}/image`, data);
formData.append('image', image);
formData.append('text', text);
return this.http.post(`${this.apiUrl}/${encodeURIComponent(deckName)}/images`, formData);
} }
} }

View File

@ -2,9 +2,9 @@
<div class="mt-10"> <div class="mt-10">
<h2 class="text-2xl font-bold mb-4">Training: {{ deck.name }}</h2> <h2 class="text-2xl font-bold mb-4">Training: {{ deck.name }}</h2>
<div class="bg-white shadow rounded-lg p-6 flex flex-col items-center"> <div class="bg-white shadow rounded-lg p-6 flex flex-col items-center">
<img [src]="currentImage?.image" alt="Vokabelbild" class="w-64 h-64 object-contain mb-4"> <img [src]="currentImage" alt="Vokabelbild" class="max-h-[50vh] object-contain mb-4">
<div *ngIf="showTextFlag" class="bg-black bg-opacity-50 text-white text-lg p-2 rounded mb-4"> <div *ngIf="showTextFlag" class="bg-black bg-opacity-50 text-white text-lg p-2 rounded mb-4">
{{ currentImage?.text }} <!-- {{ currentImage?.text }} -->
</div> </div>
<div class="flex space-x-4"> <div class="flex space-x-4">
<button (click)="showText()" class="bg-green-500 text-white py-2 px-4 rounded hover:bg-green-600" [disabled]="showTextFlag"> <button (click)="showText()" class="bg-green-500 text-white py-2 px-4 rounded hover:bg-green-600" [disabled]="showTextFlag">

View File

@ -18,9 +18,9 @@ export class TrainingComponent {
unknownCount: number = 0; unknownCount: number = 0;
showTextFlag: boolean = false; showTextFlag: boolean = false;
get currentImage(): DeckImage | null { get currentImage(): string | null {
if (this.currentIndex < this.deck.images.length) { if (this.currentIndex < this.deck.images.length) {
return this.deck.images[this.currentIndex]; return `/api/debug_image/${this.deck.images[this.currentIndex].name}`;
} }
return null; return null;
} }

View File

@ -42,6 +42,7 @@ export class UploadImageModalComponent implements AfterViewInit, OnDestroy {
modal:any; modal:any;
originalImageWidth:number|undefined; originalImageWidth:number|undefined;
originalImageHeight:number|undefined; originalImageHeight:number|undefined;
imagename:string|undefined|null;
constructor(private deckService: DeckService, private http: HttpClient) { } constructor(private deckService: DeckService, private http: HttpClient) { }
ngAfterViewInit(): void { ngAfterViewInit(): void {
@ -135,6 +136,7 @@ export class UploadImageModalComponent implements AfterViewInit, OnDestroy {
} }
// Bildverarbeitung im Frontend durchführen // Bildverarbeitung im Frontend durchführen
this.imagename = (response.results && response.results.length>0)?response.results[0].name:null;
await this.processImage(response.results); await this.processImage(response.results);
} catch (error) { } catch (error) {
console.error('Fehler beim OCR-Service:', error); console.error('Fehler beim OCR-Service:', error);
@ -313,12 +315,10 @@ export class UploadImageModalComponent implements AfterViewInit, OnDestroy {
save(): void { save(): void {
// Hier kannst du die Logik zum Speichern der Bilddaten implementieren // Hier kannst du die Logik zum Speichern der Bilddaten implementieren
// Zum Beispiel: // Zum Beispiel:
/*
const data = { const data = {
deckName: this.deckName, deckname: this.deckName,
image: this.originalImageSrc, image: this.imagename,
boxes: this.boxes, boxes: this.boxes,
detectedText: this.detectedText
}; };
this.deckService.saveImageData(data).subscribe({ this.deckService.saveImageData(data).subscribe({
next: () => { next: () => {
@ -331,7 +331,6 @@ export class UploadImageModalComponent implements AfterViewInit, OnDestroy {
alert('Fehler beim Speichern des Bildes.'); alert('Fehler beim Speichern des Bildes.');
} }
}); });
*/
// Temporäres Beispiel: // Temporäres Beispiel:
alert('Save button clicked'); alert('Save button clicked');
this.imageUploaded.emit(); this.imageUploaded.emit();