{"id":223,"date":"2023-07-23T12:50:37","date_gmt":"2023-07-23T10:50:37","guid":{"rendered":"https:\/\/www.richard-becker.net\/blog\/?p=223"},"modified":"2023-11-20T21:32:32","modified_gmt":"2023-11-20T20:32:32","slug":"diy-scan-station-fuer-dokumente","status":"publish","type":"post","link":"https:\/\/www.richard-becker.net\/blog\/2023\/07\/23\/diy-scan-station-fuer-dokumente\/","title":{"rendered":"DIY Scan-Station f\u00fcr Dokumente"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Auf meinem Weg dahin, eine automatisierte Dokumenten-Scan-Station mit einem RaspberryPi einzurichten, habe ich einige Zeit verschwendet, bin letztlich aber zu einem brauchbaren Ergebnis gekommen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vielleicht hilft meine Beschreibung dir ja, damit du nicht die gleichen Fehler machst, wie ich&#8230;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vorhaben<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Vorhanden:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Dokumentenscanner (Epson Workforce DS-310)<\/li>\n\n\n\n<li>Raspberry Pi (Raspberry Pi Zero W \/\/ Raspberry Pi 3+)<\/li>\n\n\n\n<li>NAS (Synology DiskStation)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ich wollte gern eine Scan-Station f\u00fcr Dokumente realisieren, an der ich eingehende Papierdokumente (vorwiegend im Format A4) in einen Dokumentenscanner lege, der diese dann wiederum auf Knopfdruck in einer Netzwerkfreigabe auf meinem NAS ablegt. Idealerweise &#8211; diesen Job h\u00e4tte allerdings auch das NAS ausf\u00fchren k\u00f6nnen &#8211; sollte dabei gleich die Texterkennung durchgef\u00fchrt werden, damit die Dokumente im Anschluss durchsuchbar sind.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Raspberry Pi Zero W<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"445\" src=\"https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/07\/raspberry-pi-1904918_1920-e1690102478179-1024x445.jpg\" alt=\"\" class=\"wp-image-232\" srcset=\"https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/07\/raspberry-pi-1904918_1920-e1690102478179-1024x445.jpg 1024w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/07\/raspberry-pi-1904918_1920-e1690102478179-300x130.jpg 300w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/07\/raspberry-pi-1904918_1920-e1690102478179-768x334.jpg 768w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/07\/raspberry-pi-1904918_1920-e1690102478179-1536x668.jpg 1536w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/07\/raspberry-pi-1904918_1920-e1690102478179.jpg 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Da ich noch einen Raspberry Pi Zero W herumliegen hatte, dachte ich mir, dass es naheliegend sei, das Ganze mit diesem umzusetzen. Schnell wurde mir jedoch klar, dass die meisten ben\u00f6tigten Bibliotheken f\u00fcr Rapsbian OS zu alt waren, als dass sie f\u00fcr mich n\u00fctzlich gewesen w\u00e4ren: So war &#8222;<a href=\"http:\/\/www.sane-project.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">SANE<\/a>&#8220; beispielsweise nur in der (Backend-)Version 1.0.27 verf\u00fcgbar, der von mir eingesetzte Dokumentenscanner Epson Workforce DS-310 funktioniert allerdings erst mit neueren Versionen. (Hinweis: Mit \u00e4lteren Versionen hat er nicht &#8222;gar nicht&#8220; funktioniert, allerdings kam es zu h\u00e4ufigen Verbindungsabbr\u00fcchen und fehlerhaften Scans.)<br>Zudem schien mir die Adapter-Verbindung zwischen USB-A und Micro-USB (der kleine Raspberry Zero hat keinen gro\u00dfen USB-Port) nicht besonders zuverl\u00e4ssig zu funktionieren!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Raspberry Pi 3+<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"453\" src=\"https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/07\/device-3438525_1920-e1690102504298-1024x453.jpg\" alt=\"\" class=\"wp-image-231\" srcset=\"https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/07\/device-3438525_1920-e1690102504298-1024x453.jpg 1024w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/07\/device-3438525_1920-e1690102504298-300x133.jpg 300w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/07\/device-3438525_1920-e1690102504298-768x340.jpg 768w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/07\/device-3438525_1920-e1690102504298-1536x679.jpg 1536w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/07\/device-3438525_1920-e1690102504298.jpg 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Kurzerhand habe ich dann einen Raspberry Pi 3+ eingesetzt, der bislang eine andere (wenig ben\u00f6tigte) Funktion in meinem Netzwerk \u00fcbernahm. Auf ihm habe ich ein Ubuntu mit Hilfe des <a href=\"https:\/\/www.raspberrypi.com\/software\/\" target=\"_blank\" rel=\"noreferrer noopener\">Raspberry Pi Imagers<\/a> aufgesetzt und anschlie\u00dfend SANE installiert.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Installation von SANE<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get update\r\nsudo apt-get upgrade\r\nsudo apt install sane sane-utils scanbd git imagemagick -y<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">(Angelehnt habe ich diesen Prozess an das Vorgehen von Chris Schuld hier: <a href=\"https:\/\/chrisschuld.com\/2020\/01\/network-scanner-with-scansnap-and-raspberry-pi\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/chrisschuld.com\/2020\/01\/network-scanner-with-scansnap-and-raspberry-pi\/<\/a>)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Unter Ubuntu f\u00fcr den Raspberry Pi 3+ konnte ich zwar immer noch nicht die neuste Version von SANE installieren, immerhin aber die (Backend-)Version 1.1.1, die den Drucker korrekt unterst\u00fctzt. (Pr\u00fcfen kann man das in der <a href=\"http:\/\/www.sane-project.org\/sane-supported-devices.html\" target=\"_blank\" rel=\"noreferrer noopener\">Liste der unterst\u00fctzten Ger\u00e4te<\/a>.) Im Anschluss habe ich meinen Benutzer der Gruppe &#8222;scanner&#8220; hinzugef\u00fcgt, unter der SANE arbeitet.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo usermod -a -G scanner &lt;BENUTZER><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Mit folgenden Befehlen konnte ich dann schauen, ob sich der Scanner zu erkennen gibt und sogar etwas scannt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Listet alle USB-Ger\u00e4te\r\nlsusb\r\n\r\n# Sucht nach Scannern am USB-Bus\r\nsudo sane-find-scanner\r\n\r\n# Pr\u00fcft, ob der Scanner korrekt von SANE erkannt wurde\r\nsudo scanimage -L\r\n\r\n# Scannt ein Bild und leitet es in ein tempor\u00e4res Verzeichnis um. Wer hineinsehen will, kann dies an einem Rechner mit GUI unter GIMP tun.\r\nsudo scanimage >\/tmp\/out.pnm<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Installation von sane-scan-pdf<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Raman Gupta hat mit &#8222;<a href=\"https:\/\/github.com\/rocketraman\/sane-scan-pdf\" target=\"_blank\" rel=\"noreferrer noopener\">sane-scan-pdf<\/a>&#8220; ein Script bereitgestellt, dass die ganze &#8222;harte Arbeit&#8220; \u00fcbernimmt, die passenden Befehle zu verketten, um tats\u00e4chlich mehrere Seiten per automatischem Papiereinzug zu einer PDF zu verketten und eine OCR laufen zu lassen. Installieren l\u00e4sst es sich mit:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd $HOME\r\ngit clone https:\/\/github.com\/rocketraman\/sane-scan-pdf.git<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nach kurzem Ausprobieren musste ich feststellen, dass das Script meine Scans ohne OCR mit &#8222;pnmtops&#8220;, einem Tool, dass aus dem PNM-Format PostScript Dateien erstellt, konvertiert wurde und dabei irgendwie auf der resultierenden Seite nicht korrekt positioniert wurde. Auch die Option &#8222;-nocenter&#8220; brachte keine Abhilfe\u2026 ein Teil auf der Seite oben blieb abgeschnitten.<br>Ein Workaround, der f\u00fcr mich (gut!) funktioniert, ist der Einsatz von &#8222;tesseract&#8220; zur Texterkennung. Damit wird mein Scan korrekt dargestellt und durchsuchbar &#8211; exakt das, was ich wollte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mit folgendem Script lief dann der ganze Scanvorgang wie am Schn\u00fcrchen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/sh\n\nnow=date +\"%Y-%m-%d-%H%M\"\n\/home\/&lt;BENUTZER>\/sane-scan-pdf\/scan -d -r 200 -v -m Color --device \"\" -xo \"-y 297.0\" --no-default-size --ocr --language deu -o \/home\/&lt;BENUTZER>\/scans\/scan-$now.pdf<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Scannen in einen Netzwerkordner<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"412\" src=\"https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/07\/server-g2a28b7049_1280-e1688994604279-1024x412.jpg\" alt=\"\" class=\"wp-image-105\" srcset=\"https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/07\/server-g2a28b7049_1280-e1688994604279-1024x412.jpg 1024w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/07\/server-g2a28b7049_1280-e1688994604279-300x121.jpg 300w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/07\/server-g2a28b7049_1280-e1688994604279-768x309.jpg 768w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/07\/server-g2a28b7049_1280-e1688994604279.jpg 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Nat\u00fcrlich wollte ich die gescannten Dateien nicht lokal sondern auf einer SAMBA-Netzwerkfreigabe meines NAS ablegen. Dazu habe ich den Ordner &#8222;\/mnt\/scans&#8220; erstellt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo mkdir \/mnt\/scans<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Danach musste ich die Datei &#8222;\/home\/\/.credentials\/scanserver&#8220; mit folgendem Inhalt erstellen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>username=&lt;NAS-BENUTZER>\r\npassword=&lt;FREIGABE-PASSWORT><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Im Anschluss habe ich noch die Datei &#8222;\/etc\/fstab&#8220; bearbeitet und folgende Zeile erg\u00e4nzt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/&lt;IP-Adresse>\/scans \/mnt\/scans cifs user,credentials=\/home\/&lt;BENUTZER>\/.credentials\/scanserver,iocharset=utf8,vers=2.0,_netdev,x-systemd.automount,x-systemd.after=network-online.target,noperm 0 0<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Danach mussten nur noch alle Laufwerke neu gemountet werden:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo mount -a<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Auch im obenstehenden Script, das den Scanvorgang \u00fcbernimmt, habe ich dann als Zielverzeichnis die Netzwerkfreigabe und nicht l\u00e4nger das lokale Verzeichnis \u00fcbernommen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">scanbd Alternative &#8211; mein Scanner macht seine Buttons nicht \u00f6ffentlich zug\u00e4nglich<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"199\" src=\"https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/07\/printing-2790795_1920-e1690104222860-1024x199.jpg\" alt=\"\" class=\"wp-image-241\" srcset=\"https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/07\/printing-2790795_1920-e1690104222860-1024x199.jpg 1024w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/07\/printing-2790795_1920-e1690104222860-300x58.jpg 300w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/07\/printing-2790795_1920-e1690104222860-768x150.jpg 768w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/07\/printing-2790795_1920-e1690104222860-1536x299.jpg 1536w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2023\/07\/printing-2790795_1920-e1690104222860.jpg 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Den Knopfdruck des Scanners abzufragen stellte sich dann als n\u00e4chste H\u00fcrde heraus. Auf dem herk\u00f6mmlichen Weg, n\u00e4mlich mit scanbd, lie\u00dfen sich die Buttons nicht abfragen, da der Scanner ihren Status nicht \u00f6ffentlich preisgibt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entsprechend habe ich <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/janrueth\/es2button\" target=\"_blank\">folgende Anleitung<\/a> befolgt und versucht, es2button von Jan Ruethzu kompilieren und zu installieren. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Download von Github ins Home-Verzeichnis:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd $HOME\ngit clone https:\/\/github.com\/janrueth\/es2button.git<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Kompilieren vorbereiten (hierbei wird auch die Source vom Treiber &#8222;epsonscan2&#8220; heruntergeladen):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd es2button\ncmake . -B build<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Kompilieren:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>make -C build<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Debian-Package erstellen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>make -C build package<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Die .deb-Datei findet sich dann in <code>build\/artifacts\/<\/code>. Sie konnte dann aber noch nicht installiert werden, denn hier sollte mir die Architektur des Rapsberry Pi mit Ubuntu (ARM64) einen Strich durch die Rechnung machen. Zwar lassen sich alle Abh\u00e4ngigkeiten in Form von Softwarepaketen installieren, gerade der ben\u00f6tigte Scanner-Treiber von Epson (&#8222;epsonscan2&#8220;) ist aber nicht f\u00fcr diese Prozessorarchitektur kompiliert, was ich dann noch selbst \u00fcbernehmen musste. Zwei Stunden (ja, leider!) sollten f\u00fcr diesen Prozess einkalkuliert werden. Hier bin ich <a href=\"https:\/\/download.ebz.epson.net\/man\/linux\/epsonscan2_e.html#sec5-1-4\" target=\"_blank\" rel=\"noreferrer noopener\">dieser Anleitung<\/a> von Epson selbst gefolgt. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Quelle des Treibers hatte ich ja schon herunterladen lassen, diese musste ich mir nur noch an einen vern\u00fcnftigen Ort kopieren:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd $HOME\ncd es2button\/build\ncp epsonscan2-&lt;VERSIONSNUMMER>.src.tar.gz ~\ntar -xvzf epsonscan2-&lt;VERSIONSNUMMER>.src.tar.gz\nmv epsonscan2-&lt;VERSIONSNUMMER>.src.tar.gz epsonscan2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Im Anschluss konnte ich das Kompilieren\/Installieren vorbereiten, indem ich die ben\u00f6tigten Abh\u00e4ngigkeiten installiert habe:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd $HOME\ncd epsonscan2\n.\/install-deps<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Weiter ging es mit:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cmake .<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das ging noch verh\u00e4ltnism\u00e4\u00dfig schnell (wenige Minuten), der folgende Prozess dauert dann allerdings in etwa eineinhalb bis zwei Stunden:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>make<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Danach konnte epsonscan2 installiert werden, das ging wieder recht schnell (wenige Minuten):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo make install<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">M\u00f6gliche Fehler &#8211; und einen Umgang damit &#8211; <a href=\"https:\/\/download.ebz.epson.net\/man\/linux\/epsonscan2_e.html#sec5-2\" target=\"_blank\" rel=\"noreferrer noopener\">listet Epson \u00fcbrigens hier auf<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zur\u00fcck zu es2buttons: Mit dem Scanner-Treiber als letzter fehlender Abh\u00e4ngigkeit konnte nun es2buttons installiert werden.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd $HOME\ncd es2button\/build\/artifacts\nsudo dpkg --force-all -i es2button_&lt;VERSIONSNUMMER>_arm64.deb<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nach einem Neustart mit <code>sudo reboot now<\/code> wurden die Knopfdr\u00fccke am Scanner dann erkannt. Nun musste nur noch der Inhalt des oben gezeigten Scripts (sofern es denn abgespeichert wurde) an die entsprechende Stelle kopiert werden, damit es auf Knopfdruck ausgef\u00fchrt wird:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo cp \/home\/&lt;BENUTZER>\/scanfile.sh \/etc\/es2button\/default<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Fertig!<\/h2>\n","protected":false},"excerpt":{"rendered":"<p>Auf meinem Weg dahin, eine automatisierte Dokumenten-Scan-Station mit einem RaspberryPi einzurichten, habe ich einige Zeit&hellip; <a class=\"read-more-link\" href=\"https:\/\/www.richard-becker.net\/blog\/2023\/07\/23\/diy-scan-station-fuer-dokumente\/\">[Weiterlesen]<\/a><\/p>\n","protected":false},"author":2,"featured_media":229,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[34,33,10,11,22,31,32,8,7],"class_list":["post-223","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technologie","tag-dokumente","tag-dokumentenscanner","tag-hardware","tag-homeserver","tag-open-source","tag-papierlos","tag-scanner","tag-selfhosting","tag-technologie"],"_links":{"self":[{"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/posts\/223","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/comments?post=223"}],"version-history":[{"count":18,"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/posts\/223\/revisions"}],"predecessor-version":[{"id":257,"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/posts\/223\/revisions\/257"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/media\/229"}],"wp:attachment":[{"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/media?parent=223"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/categories?post=223"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/tags?post=223"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}