{"id":232,"date":"2021-09-03T11:21:00","date_gmt":"2021-09-03T11:21:00","guid":{"rendered":"https:\/\/e-jim.be\/blog\/?p=232"},"modified":"2024-09-04T21:44:41","modified_gmt":"2024-09-04T21:44:41","slug":"ocrisation-automatique-de-pdfs","status":"publish","type":"post","link":"https:\/\/e-jim.be\/blog\/index.php\/2021\/09\/03\/ocrisation-automatique-de-pdfs\/","title":{"rendered":"OCRisation automatique de PDFs"},"content":{"rendered":"\n<p>(Memo d&rsquo;une op\u00e9ration faite dans une \u00e9cole en 2021 &#8211; Aujourd&rsquo;hui je d\u00e9ploirais un <a href=\"https:\/\/github.com\/Stirling-Tools\/Stirling-PDF\">Stirling PDF<\/a>)<\/p>\n\n\n\n<p>L&rsquo;h\u00f4te OCR a pour objectif d&rsquo;OCRiser automatiquement les documents des profs, pour les \u00e9l\u00e8ves qui ont des besoins sp\u00e9cifiques (liseuses audio, outils pour les dys,&#8230;)<\/p>\n\n\n\n<p>Pour ce faire, un share a \u00e9t\u00e9 cr\u00e9\u00e9 sur le NAS (\\\\&lt;hostname_du_syno>\\scan), avec 3 sous-dossier (EN\/FR\/NL) pour s&rsquo;adapter aux diff\u00e9rentes langues dans lesquelles les fichiers pourraient \u00eatre r\u00e9dig\u00e9s.<\/p>\n\n\n\n<p>Dans chacun de ces dossiers, des sous-dossiers EN_COURS et FINI sont cr\u00e9\u00e9s.<\/p>\n\n\n\n<p>Les scanners sont r\u00e9gl\u00e9s avec des raccourcis pour scanner directement dans les dossiers racines de chaque langue.<\/p>\n\n\n\n<p>Le share est mont\u00e9 via le Proxmox, qui a un fichier \/etc\/systemd\/system\/scan.mount avec le contenu suivant:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Unit]\nDescription=Montage SMB\/CIFS Scan sur syno\nRequires=network-online.target\nAfter=network-online.service\n\n&#91;Mount]\nWhat=\/\/&lt;hostname_du_syno>\/scan\nWhere=\/scan  Options=user=&lt;user-du-share>,pass=&lt;mots-de-passe-du-share>,rw,vers=2.0,uid=100000,gid=100000\nType=cifs&#91;Install]\nWantedBy=multi-user.target\n<\/code><\/pre>\n\n\n\n<p>Ce m\u00eame montage est &lsquo;mont\u00e9&rsquo; (bind\u00e9 en vrai) dans le container LXC via l&rsquo;option suivante dans \/etc\/pve\/lxc\/103.conf<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mp1: \/scan,mp=scan\n<\/code><\/pre>\n\n\n\n<p>Ensuite, ocrmypdf (<a href=\"https:\/\/github.com\/jbarlow83\/OCRmyPDF\/\">https:\/\/github.com\/jbarlow83\/OCRmyPDF\/<\/a>) a \u00e9t\u00e9 install\u00e9 sur le container via apt install, ainsi que tesseract-ocr-fra tesseract-ocr-nld tesseract-ocr-eng et tesseract-ocr.<\/p>\n\n\n\n<p>Enfin, un timer systemd a \u00e9t\u00e9 cr\u00e9\u00e9 pour chaque langue afin de v\u00e9rifier r\u00e9guli\u00e8rement l&rsquo;existence d&rsquo;un nouveau fichier et d&rsquo;\u00e9ventuellement lancer son traitement.<\/p>\n\n\n\n<p>Exemple pour le fran\u00e7ais:<\/p>\n\n\n\n<p><strong>\/etc\/systemd\/system\/scans.fr.timer<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Unit]Description=OCRise les scans toutes les 30 secondes\n&#91;Timer]\nOnBootSec=60\nOnUnitActiveSec=30\nUnit=scans.fr.service\n\n&#91;Install]\nWantedBy=timers.target\n<\/code><\/pre>\n\n\n\n<p><strong>\/etc\/systemd\/system\/scans.fr.service<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Unit]\nDescription=OCRise les scans\n&#91;Service]\nType=simple\nExecStart=\/root\/cron-OCR-FR.sh\n&#91;Install]\nWantedBy=multi-user.target\n<\/code><\/pre>\n\n\n\n<p><strong>\/root\/cron-OCR-FR.sh<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\n#Source: https:\/\/github.com\/fritz-hh\/OCRmyPDF\/issues\/90\n#Je fais vite le move pour \u00e9viter la concurrence avec le job suivant\n\nif &#91; -f \/scan\/FR\/lock ]\nthen\n\techo \"y'a un lock\"\n\texit\nelse\n\ttouch \/scan\/FR\/lock\nfi\nnbfichiers=$(find \/scan\/FR\/ -maxdepth 1 -name \"*.pdf\" | wc -l)\nif &#91; $nbfichiers -gt 0 ]\nthen\n\tfor pdf in \/scan\/FR\/*.pdf; do\n\t\techo \"On s'occupe de $pdf\"\n\t\tcp $pdf \/scan\/FR\/EN_COURS\n\t\tnom=$(basename \"$pdf\")\n\t\techo \"Son nom est $pdf\"\n\t\textension=\"_ocr.pdf\"\n\t\techo \"Son  extension est $extension\"\n\t\toutput=\/scan\/FR\/FINI\/\t\t\n\npath=$output$nom$extension\n\t\techo \"Son path est $path\"\n\t\t\/usr\/bin\/ocrmypdf -l fra $pdf $path -v;\n\t\trm $pdf\n\tdone\nfi\nrm \/scan\/FR\/lock\n<\/code><\/pre>\n\n\n\n<p>Faut pas oublier de enable tous les services et timers (dans Proxmox et dans l&rsquo;h\u00f4te).movemove<\/p>\n","protected":false},"excerpt":{"rendered":"<p>(Memo d&rsquo;une op\u00e9ration faite dans une \u00e9cole en 2021 &#8211; Aujourd&rsquo;hui je d\u00e9ploirais un Stirling PDF) L&rsquo;h\u00f4te OCR a pour objectif d&rsquo;OCRiser automatiquement les documents des profs, pour les \u00e9l\u00e8ves qui ont des besoins sp\u00e9cifiques (liseuses audio, outils pour les dys,&#8230;) Pour ce faire, un share a \u00e9t\u00e9 cr\u00e9\u00e9 sur le NAS (\\\\&lt;hostname_du_syno>\\scan), avec 3 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-232","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/e-jim.be\/blog\/index.php\/wp-json\/wp\/v2\/posts\/232"}],"collection":[{"href":"https:\/\/e-jim.be\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/e-jim.be\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/e-jim.be\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/e-jim.be\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=232"}],"version-history":[{"count":3,"href":"https:\/\/e-jim.be\/blog\/index.php\/wp-json\/wp\/v2\/posts\/232\/revisions"}],"predecessor-version":[{"id":246,"href":"https:\/\/e-jim.be\/blog\/index.php\/wp-json\/wp\/v2\/posts\/232\/revisions\/246"}],"wp:attachment":[{"href":"https:\/\/e-jim.be\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=232"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/e-jim.be\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=232"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/e-jim.be\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=232"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}