synOCR synOCR - GUI für OCRmyPDF

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
In allen 3 Log gibt es von OCRmyPDF die Fehlermeldung: Input file is not a PDF, checking if it is an image...
Bitte prüfe mal die Quelldatei oder probiere eine andere. Du kannst sie mir gern auch vertraulich hochladen, wenn das für dich ok ist.
 
Zuletzt bearbeitet:

andy9999

Benutzer
Mitglied seit
18. Mrz 2023
Beiträge
2
Punkte für Reaktionen
1
Punkte
53
Hi,
erstmal möchte ich euch danken für diese coole OCR-Lösung.
Ich benutzte derzeit 1.3.99.10 [2023-05-16] auf DSM7.1.
Leider wird das Datum in vielen Fällen nicht erkannt. Ich sehe folgende Fehlermeldung:

Code:
  -----------------------------------------------------------------------------------
  | search for a valid date in ocr text:                                            |
  -----------------------------------------------------------------------------------

                run RegEx date search - search for date format: 1 (1 = dd mm [yy]yy; 2 = [yy]yy mm dd; 3 = mm dd [yy]yy)
                  Dates found: 3
                  check date (dd mm [yy]yy): 21.09.2022
./synOCR.sh: line 1210: let: n=09: value too great for base (error token is "09")
./synOCR.sh: line 1210: printf: ERROR: invalid number
./synOCR.sh: line 1210: printf: at: invalid number
./synOCR.sh: line 1210: printf: line: invalid number
./synOCR.sh: line 1210: printf: 1210:: invalid number
./synOCR.sh: line 1210: printf: let: invalid number
./synOCR.sh: line 1210: printf: |: invalid number
./synOCR.sh: line 1210: printf: awk: invalid number
./synOCR.sh: line 1210: printf: -F'[./-]': invalid number
./synOCR.sh: line 1210: printf: $2}')": invalid number
ERROR at line 1210: date_mm=$(printf '%02d' $(let "n=$(echo "${currentFoundDate}" | awk -F'[./-]' '{print $2}')"; echo $((n)) ) )
ERROR at line 1240: date "+%d/%m/%Y" -d "${date_mm}"/"${date_dd}"/"${date_yy}" > /dev/null 2>&1
                  ➜ invalid format

Ich habe mir den code an der Stelle angeschaut und es gibt wohl ein Problem mit let "n=09" was in der Fehlermeldung let: n=09: value too great for base (error token is "09") resultiert.

Ich habe einen kleinen Fix bei mir lokal im script vorgenommen und damit funktioniert das Erkennen des Datums jetzt korrekt:
Code:
bash-4.4# diff synOCR.sh synOCR.sh.org
1208c1208
<                 date_dd=$(printf '%02d' $(let "n=10#$(echo "${currentFoundDate}" | awk -F'[./-]' '{print $1}' | grep -o '[0-9]*')"; echo $((n)) ) )
---
>                 date_dd=$(printf '%02d' $(let "n=$(echo "${currentFoundDate}" | awk -F'[./-]' '{print $1}' | grep -o '[0-9]*')"; echo $((n)) ) )
1210c1210
<                 date_mm=$(printf '%02d' $(let "n=10#$(echo "${currentFoundDate}" | awk -F'[./-]' '{print $2}')"; echo $((n)) ) )
---
>                 date_mm=$(printf '%02d' $(let "n=$(echo "${currentFoundDate}" | awk -F'[./-]' '{print $2}')"; echo $((n)) ) )
1215c1215
<                 date_dd=$(printf '%02d' $(let "n=10#$(echo "${currentFoundDate}" | awk -F'[./-]' '{print $3}' | grep -o '[0-9]*')"; echo $((n)) ) )
---
>                 date_dd=$(printf '%02d' $(let "n=$(echo "${currentFoundDate}" | awk -F'[./-]' '{print $3}' | grep -o '[0-9]*')"; echo $((n)) ) )
1218c1218
<                 date_mm=$(printf '%02d' $(let "n=10#$(echo "${currentFoundDate}" | awk -F'[./-]' '{print $2}')"; echo $((n)) ) )
---
>                 date_mm=$(printf '%02d' $(let "n=$(echo "${currentFoundDate}" | awk -F'[./-]' '{print $2}')"; echo $((n)) ) )
1224c1224
<                 date_dd=$(printf '%02d' $(let "n=10#$(echo "${currentFoundDate}" | awk -F'[./-]' '{print $2}' | grep -o '[0-9]*')"; echo $((n)) ) )
---
>                 date_dd=$(printf '%02d' $(let "n=$(echo "${currentFoundDate}" | awk -F'[./-]' '{print $2}' | grep -o '[0-9]*')"; echo $((n)) ) )
1226c1226
<                 date_mm=$(printf '%02d' $(let "n=10#$(echo "${currentFoundDate}" | awk -F'[./-]' '{print $1}')"; echo $((n)) ) )
---
>                 date_mm=$(printf '%02d' $(let "n=$(echo "${currentFoundDate}" | awk -F'[./-]' '{print $1}')"; echo $((n)) ) )

Ich habe gesehen, dass schon mit dem "10#' experimentiert wurde. Ich habe es jetzt direkt im len "n=... eingebaut und damit funktioniert es.
Vielleicht könntet ihr euch den fix mal anschauen. Ich habe derzeit das git project noch nicht ausgecheckt und kann daher keinen pull request dafür machen.

Liebe Grüße
Andreas
 
  • Like
Reaktionen: geimist

BlueRazer

Benutzer
Mitglied seit
09. Okt 2019
Beiträge
69
Punkte für Reaktionen
26
Punkte
24
Das erste Mal Fehler und PDFs werden nicht gescannt.
Was bedeutet das und wo sollte ich suchen?

➜ OCRmyPDF-LOG:
reading file from standard input
Start processing 4 pages concurrently
2 Error: /rangecheck in readorigxref
Operand stack:
0 0 41
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
Das ist ein Fehler von OCRmyPDF. Kürzlich gab es da ein neues Release. Möglicherweise gibt es da einen Fehler im Zusammenhang mit deinen Parametern und Dokumenten. Probiere mal ein älteres Image (ich nutze immer noch v12.7.2). Wenn es nicht hilft, müssen wir weitergucken.
 
  • Like
Reaktionen: BlueRazer

BlueRazer

Benutzer
Mitglied seit
09. Okt 2019
Beiträge
69
Punkte für Reaktionen
26
Punkte
24
Danke Stephan,
wird wohl mal Zeit, den Donate Button zu klicken ;)

Hat tatsächlich and der Version gelegen. Hatte auf "latest" stehen.
 

andy9999

Benutzer
Mitglied seit
18. Mrz 2023
Beiträge
2
Punkte für Reaktionen
1
Punkte
53
@Gthorsten Ich habe ca. 40 verschiedenste Dokumente gescannt, um mein yaml-File damit zu erstellen und zu verfizieren. Und dabei habe ich viel hin und her probiert, u.a. habe ich auch die Datumssuche mal von python auf regex umgestellt.
Das Datum 21.09.2022 vom Dokument, was ich oben benutzt habe, wird von der python-Datumssuche gefunden.

Allerdings habe ich ein Dokument mit einem Datum "17/12/22", dass von der python Suche nicht gefunden wird aber von der regex Suche schon.
Mit regex Suche sieht das log so aus:
Code:
                rename tag is: "#MoveDance"


  -----------------------------------------------------------------------------------
  | search for a valid date in ocr text:                                            |
  -----------------------------------------------------------------------------------

                run RegEx date search - search for date format: 1 (1 = dd mm [yy]yy; 2 = [yy]yy mm dd; 3 = mm dd [yy]yy)
                  Dates found: 2
                  check date (dd mm [yy]yy): 17/12/22
                  ➜ valid
                      day:  17
                      month:12
                      year: 2022

Mit python Suche so:
Code:
                rename tag is: "#MoveDance"


  -----------------------------------------------------------------------------------
  | search for a valid date in ocr text:                                            |
  -----------------------------------------------------------------------------------

2023-06-28 15:36:35,273 - Date scanning started
2023-06-28 15:36:35,273 - Version: 1.04
2023-06-28 15:36:35,273 - Parameter minYear = 0
2023-06-28 15:36:35,273 - Parameter maxYear = 0
2023-06-28 15:36:35,273 - Parameter searchnearest = on
2023-06-28 15:36:35,273 - set searchnearest = on
2023-06-28 15:36:35,273 - Parameter fileWithTextFindings = /tmp/tmp.dTjOYDuFju/step2_tmp_1687959386//synOCR.txt
2023-06-28 15:36:35,273 - Parameter dateBlackLIst = 2021-07-02
2023-06-28 15:36:35,274 - start checking blacklist
2023-06-28 15:36:35,420 - end checking blacklist
2023-06-28 15:36:35,420 - Start searching for alphanumerical and numerical dates......
2023-06-28 15:36:35,448 - finish searching for alphanumerical and numerical dates......
2023-06-28 15:36:35,448 - found 0 dates
2023-06-28 15:36:35,448 - no dates found
2023-06-28 15:36:35,448 - found date None
2023-06-28 15:36:35,448 - Date scanning ended
                  Dates found: 1
                  check date ([yy]yy mm dd): None
./synOCR.sh: line 1215: printf: ERROR: invalid number
./synOCR.sh: line 1215: printf: at: invalid number
./synOCR.sh: line 1215: printf: line: invalid number
./synOCR.sh: line 1215: printf: 1215:: invalid number
./synOCR.sh: line 1215: printf: let: invalid number
./synOCR.sh: line 1215: printf: |: invalid number
./synOCR.sh: line 1215: printf: awk: invalid number
./synOCR.sh: line 1215: printf: -F'[./-]': invalid number
./synOCR.sh: line 1215: printf: $3}': invalid number
./synOCR.sh: line 1215: printf: |: invalid number
./synOCR.sh: line 1215: printf: grep: invalid number
./synOCR.sh: line 1215: printf: -o: invalid number
ERROR at line 1215: date_dd=$(printf '%02d' $(let "n=10#$(echo "${currentFoundDate}" | awk -F'[./-]' '{print $3}' | grep -o '[0-9]*')"; echo $((n)) ) )
./synOCR.sh: line 1218: printf: ERROR: invalid number
./synOCR.sh: line 1218: printf: at: invalid number
./synOCR.sh: line 1218: printf: line: invalid number
./synOCR.sh: line 1218: printf: 1218:: invalid number
./synOCR.sh: line 1218: printf: let: invalid number
./synOCR.sh: line 1218: printf: |: invalid number
./synOCR.sh: line 1218: printf: awk: invalid number
./synOCR.sh: line 1218: printf: -F'[./-]': invalid number
./synOCR.sh: line 1218: printf: $2}')": invalid number
ERROR at line 1218: date_mm=$(printf '%02d' $(let "n=10#$(echo "${currentFoundDate}" | awk -F'[./-]' '{print $2}')"; echo $((n)) ) )
ERROR at line 1240: date "+%d/%m/%Y" -d "${date_mm}"/"${date_dd}"/"${date_yy}" > /dev/null 2>&1
                  ➜ invalid format
                  Date not found in OCR text - use file date:
                  day:  28
                  month:06
                  year: 2023

Dummerweise scheint der Fallback auf regex dann auch nicht korrekt zu funktionieren, sodass am Ende mit python kein Datum gefunden wird.

Ich hätte auch hier einen Vorschlag für einen Fix:
Code:
bash-4.4# diff synOCR.sh synOCR.sh.org
1174,1180d1173
<         # enable full fallback to regex in case nothing was found with python
<         if [ "$founddatestr" = "None" ]; then
<             format=1
<             tmp_date_search_method="regex"
<         fi
<     fi
<
1183c1176
<     if [ "${tmp_date_search_method}" = "regex" ]; then
---
>     elif [ "${tmp_date_search_method}" = "regex" ]; then

Damit funktioniert der fallback, siehe diese log:
Code:
                rename tag is: "#MoveDance"


  -----------------------------------------------------------------------------------
  | search for a valid date in ocr text:                                            |
  -----------------------------------------------------------------------------------

2023-06-28 16:06:12,929 - Date scanning started
2023-06-28 16:06:12,930 - Version: 1.04
2023-06-28 16:06:12,930 - Parameter minYear = 0
2023-06-28 16:06:12,930 - Parameter maxYear = 0
2023-06-28 16:06:12,930 - Parameter searchnearest = on
2023-06-28 16:06:12,930 - set searchnearest = on
2023-06-28 16:06:12,930 - Parameter fileWithTextFindings = /tmp/tmp.Uu1E7LvFIc/step2_tmp_1687961163//synOCR.txt
2023-06-28 16:06:12,930 - Parameter dateBlackLIst = 2021-07-02
2023-06-28 16:06:12,930 - start checking blacklist
2023-06-28 16:06:13,077 - end checking blacklist
2023-06-28 16:06:13,077 - Start searching for alphanumerical and numerical dates......
2023-06-28 16:06:13,105 - finish searching for alphanumerical and numerical dates......
2023-06-28 16:06:13,105 - found 0 dates
2023-06-28 16:06:13,105 - no dates found
2023-06-28 16:06:13,105 - found date None
2023-06-28 16:06:13,105 - Date scanning ended
                run RegEx date search - search for date format: 1 (1 = dd mm [yy]yy; 2 = [yy]yy mm dd; 3 = mm dd [yy]yy)
                  Dates found: 2
                  check date (dd mm [yy]yy): 17/12/22
                  ➜ valid
                      day:  17
                      month:12
                      year: 2022
 

Gthorsten

Benutzer
Mitglied seit
22. Mai 2021
Beiträge
151
Punkte für Reaktionen
42
Punkte
28
Also, das mit den Jahreszahlen, 2 stellig hatte ich schon einmal mit Stefan diskutiert.
Das funktioniert so ohne weiteres nicht zuverlässig.
17/12/22 lässt ja mehrere Interpretationen zu.
Stefan und ich hatten uns so geeinigt dem User eine Auswahl zu geben, welches Format er bevorzugt.
Dann könnte man es entsprechend anpassen. Dazu wäre aber eine Anpassung im GUI nötig. Und hierfür wurde noch Support gesucht.

Ich habe aber an der Datunsssuche auch noch was verbessert. Ich schau mir nochmal an ob das dann eine Verbesserung gibt.

Aber wie gesagt, zuverlässig geht es bei 2 stelligen Jahreszahlen meiner Meinung nach nur wenn der User das Format vorgibt
 

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
883
Punkte für Reaktionen
185
Punkte
63
Hallo Leute,
hier stelle ich Euch ein neues Update zur Verfügung.
Da ich den Editor recht intensiv nutze und von den normalen Text Files weggekommen bin, hat mich die langsame Performance beim Im- und besonders beim Export gestört. Dies habe ich zum Anlass genommen, den ganzen VBA Code komplett zu erneuern, und auch auf andere VBA Funktionen umzustellen.
Nun ist der Import ca. 5-7 mal und der Export bis zu 30x schneller wie vorher.
Weiterhin sind die Funktionen selbst überabeitet, einige Fehler beseitigt worden, und es gibt natürlich etwas Neues.
In der Version ist es nun möglich, einzelne Regeln und Blöcke zu "deaktivieren" (sie werden im Ausgabe File quasi nur aus kommentiert), sodass sie weiter vorhanden sind und einfach mit einem Klick wieder aktiviert werden können. Dadurch entfällt das händische Löschen, Kopieren oder aus kommentieren.

Die größten Änderungen hier:
Code:
Änderungen in Vers. 01.04.00
- gefixt, div. Fehler im Layout behoben, ua. beim Import und in der Darstellung der Menus
- gefixt, div. Fehler im VBA Code behoben
- NEU, Abfrage der Bildschirmauflösung nun für 16/9 und 16/10, sodass jetzt Darstellung der Menus in diesen Auflösungen korrekt ist
- NEU, Funktion "Deaktivieren / Aktivieren" von rules, subrules oder ganzen Regelböcken möglich, siehe hierzu Erläuterungen für die Funktionsweise
- NEU, kompletter VBA-Code überarbeitet / geändert, dadurch Import ca. 5-7x schneller, Export bis zu 30x schneller
- NEU, div. Abfragen und Ausgaben für User-Selectionen hinzu, zB. aktiver Datenbereich, leere Zeile, deaktivierte Regel uvm.
- NEU, Tabellenschutz - da es leider in den letzten Versionen in ungünstigen Konstellationen ab und an dazu kam, das die notwendigen Datenfelder
  und Kopierbereiche überschrieben wurden
- ENTFALL, die Fortschrittsanzeige / der Progress Balken wurde zugunsten der Performance beim Im- / Export entfernt

Außerdem hier ein paar Bilder.
Editor_01_2023_06_30.PNGEditor_02_2023_06_30.PNGEditor_03_2023_06_30.PNG

Habt Spaß
Karsten
 

Anhänge

  • synOCR_YAML_Editor_Version_01_04_00_2023_06_30.zip
    492,2 KB · Aufrufe: 14

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.200
Punkte für Reaktionen
1.024
Punkte
224
Hallo Stephan, zwei Fragen habe ich gerade:
  1. Auf der Startseite von synOCR steht: Statusinformation: Die Ordnerüberwachung läuft, kann aber nicht über die GUI gesteuert werden, da sie über den Aufgabenplaner mit dem Benutzer root gestartet wurde. Verwende den Aufgabenplaner, um sie zu beenden oder neuzustarten. Funktioniert aber alles über iNotify wie geplant. Einfach ignorieren?
  2. Ich nutze bei Paperless-ngx als Separator-Sheet PATCH-T und möchte ungern noch neue Separator Sheets ausdrucken. Ist es umsetzbar, PATCH-T als Separator in synOCR zu übernehmen und wie wäre der richtige Eintrag bei „Suchmuster Dokumententrenner“?
Danke und noch ein schönes Wochenende!
 

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
6.057
Punkte für Reaktionen
1.855
Punkte
254
neues Update zur Verfügung
Vielen Dank für deine Mühen. (y)

Ich bin im Bezug auf YAML total unbeleckt, hab einfach nie bisher die Zeit gefunden. Mein synOCR läuft seit langem in einer der ersten Versionen. :rolleyes:

Jetzt habe ich mir deinen Editor runtergeladen und gucke erst mal wie ein Schweinchen ins Uhrwerk. :oops:;)
Hast du einfach mal eine kleine Beispielimportdatei mit 2-3 Einträgen, wo man das nachvollziehen und testen kann?
 
  • Like
Reaktionen: Jesse69

Jesse69

Benutzer
Mitglied seit
22. Aug 2008
Beiträge
60
Punkte für Reaktionen
3
Punkte
8
Hallo Leute,
hier stelle ich Euch ein neues Update zur Verfügung.
Da ich den Editor recht intensiv nutze und von den normalen Text Files weggekommen bin, hat mich die langsame Performance beim Im- und besonders beim Export gestört. Dies habe ich zum Anlass genommen, den ganzen VBA Code komplett zu erneuern, und auch auf andere VBA Funktionen umzustellen.
Nun ist der Import ca. 5-7 mal und der Export bis zu 30x schneller wie vorher.
Weiterhin sind die Funktionen selbst überabeitet, einige Fehler beseitigt worden, und es gibt natürlich etwas Neues.
In der Version ist es nun möglich, einzelne Regeln und Blöcke zu "deaktivieren" (sie werden im Ausgabe File quasi nur aus kommentiert), sodass sie weiter vorhanden sind und einfach mit einem Klick wieder aktiviert werden können. Dadurch entfällt das händische Löschen, Kopieren oder aus kommentieren.

Habt Spaß
Karsten
Hallo Struppix/Karsten ,
das macht ja Laune! Ich denke, dass mir das sehr gefallen wird - bin allerdings tatsächlich zu blöd das alles zu verstehen, wie man es richtigst befüllt.
Wäre es für solche DAUs wie mich denkbar ein paar Zeilen Beispiele drin zu lassen ?
Ich hab mir vermutlich mein Profil zerschossen und muss jetzt eh mal neustarten - da ist der Editor schon perfekt gerade.

Beste Grüße Jesse
 
  • Haha
Reaktionen: peterhoffmann

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
6.057
Punkte für Reaktionen
1.855
Punkte
254

Thonav

Benutzer
Sehr erfahren
Mitglied seit
16. Feb 2014
Beiträge
7.890
Punkte für Reaktionen
1.510
Punkte
274
Ich bin ja für ein YouTube Tutorial - klingt ja sehr spannend, Dein Tool... :)
 

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
883
Punkte für Reaktionen
185
Punkte
63
Hey Leute

klar habe ich viele Beispieldateien, zB. meine Testdateien und natürlich meine eigenen YAML. Da die Testdateien jedoch keine wirklichen Suchstrings enthalten, nützen sie hierfür nicht.
Um die Funktionsweise der YAML-Datei zu verstehen, braucht es nicht viel. Wenn man die Möglichkeiten ausreizen möchte dann schon etwas mehr.

Starten wir einfach mal...
Also brauchen wir was anderes. Nehmen wir den Flyer von dem Baumarkt. Um einen sinnvollen Namen nach dem Durchlauf zu generieren, bauen wir uns diesen über verschiedene Regeln zusammen.01.PNG

02.PNG
(Gleich vorweg, es gibt mehrere Möglichkeiten dahin zu kommen. Man kann auch mehrere Suchen mit einer Regel finden / zuordnen. Schaut für so etwas ins wiki, da habe ich ein Beispiel drin.)

Zu guter Letzt noch meine RegEX um Amazon Rechnungen zu filtern und einzusortieren. Läuft super stabil und recht treffsicher. Erläuterungen in dem Thread oder im wiki.

Also mal den Import probieren. Nehmt Eure Profil-Datei aus synOCR und legt los (Sicherungskopie nicht vergessen !!!).

Wenn jemand Hilfe braucht, gerne. Einfach ein paar Scans und gewünschtes Ergebnis kurz beschreiben.


Gruß
Karsten
 

Anhänge

  • Rechnungen_Amazon.txt
    9,3 KB · Aufrufe: 8
  • Flyer.pdf
    359,5 KB · Aufrufe: 6
  • Baumarkt.txt
    473 Bytes · Aufrufe: 7

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
883
Punkte für Reaktionen
185
Punkte
63
Ich bin ja für ein YouTube Tutorial - klingt ja sehr spannend, Dein Tool... :)
Ihr seid ja verrückt. :) Das in meinem Alter... und dann noch YouTube. Es ist doch nur ne Exceltabelle :D;)

Aber hier mal die Schritte zum Erzeugen des kurzen Beispiels.
 

Anhänge

  • Flyer_Klick_Video.zip
    2,9 MB · Aufrufe: 11
  • Like
Reaktionen: peterhoffmann

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
6.057
Punkte für Reaktionen
1.855
Punkte
254
@Struppix
Danke für die Videos. Ich werde mich mal durchwurschteln. ;-)

PS: Ich fand aber etwas schade, dass du im Video gar nicht gesungen hast. :ROFLMAO: ;)
 
  • Like
Reaktionen: Struppix

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.673
Punkte für Reaktionen
1.574
Punkte
314
Ihr seid ja verrückt. :) Das in meinem Alter... und dann noch YouTube
Als Developer muss man heutzutage flexibel sein, egal wie alt du auch bist. Ich musste mich damals auch mal damit rumschlagen um den Leuten den Spirit von Ultimate Backup näher zu bringen. Für mein erstes Video habe ich gefühlt 827 Anläufe gebraucht, da ich nichts nachbearbeiten wollte. Videoschnitt ist halt nicht so meins. Also 20 Minuten volle Konzentration, nicht verplappern und schon garnicht irgendeinen Bullshit von sich geben… das hat mich echt Nerven gekostet. Aber gut…

PS: Ich fand aber etwas schade, dass du im Video gar nicht gesungen hast.
Ist es heute nicht eher üblich, solche Anleitungen zu tanzen, als sie zu singen?
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat