Journal Scanner et OCR sans passer par le cloud

Posté par  (site web personnel, Mastodon) . Licence CC By‑SA.
8
2
mar.
2021

Salut Nal,

Je vais avoir besoin de régulièrement scanner des documents pour les transformer en texte sur un ordi Linux.

Je suis donc à la recherche d’une solution qui me permette de facilement scanner et faire de l’OCR. J’aimerais que le résultat soit transmis sous forme de texte brut.

Cependant, je me rends compte que beaucoup de solutions utilisent le cloud or cette solution doit pouvoir fonctionner avec une connexion Internet très intermittente. Par contre, la création d’un réseau local est tout à fait envisageable.

La solution idéale serait pour moi un scanner qui sauve dans sa mémoire les textes scannés. Je peux ensuite y accéder à ma guise via une connexion USB mass storage.

Mais je n’ai rien trouvé de tel.

Du coup, y’a-t-il des conseils pour une solution qui fasse cela (sous Linux, bien entendu, et sans drivers propriétaires)

  • # pdfsandwich

    Posté par  . Évalué à 5.

    De mon côté, pour extraire un document sur forme de texte j'utilise pdfsandwich avec le procédé suivant :

    scanner => fichier PDF (bitmap) => pdfsandwich => fichier PDF (bitmap+txt) => pdftotext => fichier texte

    après je ne sais pas si c'est la solution la plus efficace, donc je suis aussi intéressé par d'autres retours…

  • # https://github.com/tesseract-ocr/tesseract ?

    Posté par  (site web personnel) . Évalué à 10.

    Personnellement j’utilise tesseract dans un script nautilus pour l’ocr depuis une image ou un pdf : https://github.com/yeKcim/my_nautilus_scripts/tree/master/ocr%20pics%7Cpdf je ne crois pas que tesseract utilise le réseau (?) Mais ça ne répond probablement pas à ton besoin puisque ça ne s’occupe pas de la partie scan…

  • # gscan2pdf

    Posté par  (site web personnel, Mastodon) . Évalué à 5.

    Il y gscan2pdf qui permet de scanner et de faire de l'OCR avec notament Tessaract. Par contre le sortie c'est du PDF ou Djvu. Pas de texte brut. Donc faudra convertir le pdf en texte brut (ce qui doit certainement se faire..)

    • [^] # Re: gscan2pdf

      Posté par  (site web personnel, Mastodon) . Évalué à 3.

      j'ai eu à utiliser tesseract par le passé et il génère du .txt si on le souhaite, c'est le mode que j'utilisais avant de le réimporter dans un traitement de texte (libreoffice)

      https://www.funix.org mettez un manchot dans votre PC

      • [^] # Re: gscan2pdf

        Posté par  . Évalué à 1.

        J'ai souvent des tableaux en PDF qui ont été scannés.

        Est-il possible d'exporter les données dans un format csv avec des séparateurs ? L'objectif est bien sûr de réimporter les données sans trop de resaisies

        • [^] # Re: gscan2pdf

          Posté par  . Évalué à 2.

          Peut-être avec ceci : https://tabula.technology/

          • [^] # Re: gscan2pdf

            Posté par  . Évalué à 0.

            Merci pour l'info mais Tabula ne fonctionne pas avec des fichiers images.

            Peut-être à combiner avec des outils cités dans les commentaires… Dommage qu'il n'y ait pas une solution clé en main simple à utiliser. Le cloud est quand-même bien plus simple !

        • [^] # Re: gscan2pdf

          Posté par  . Évalué à 2.

          Okular, le visualiseur pdf de kde peut recréer le tableau si on l'aide (Outils > Sélection de tableau).
          Il y a des OCR parfaitement capable de le faire sous winwin depuis au moins 25 ans. Je n'ai jamais essayé sous Linux, mais pourquoi ne serait-ce pas possible ? en ouvrant la doc de Tesseract, je vois un exemple de sortie CSV.
          Enfin il y a un outil conçu pour les journalistes, qui doivent récupérer des tableaux de partout. Il est certainement dans mes marque-pages mais là je ne trouve pas. Linuxfr a publié un article dessus il y a 5 ou 6 ans.

  • # OCRmyPDF & paperless-ng

    Posté par  . Évalué à 3. Dernière modification le 02 mars 2021 à 12:37.

    Si la sortie en texte brute n'est pas essentielle :
    Une solution simple en locale : https://github.com/jbarlow83/OCRmyPDF
    Une solution LAN plus riche en fonctionnalités : https://github.com/jonaswinkler/paperless-ng

    • [^] # Re: OCRmyPDF & paperless-ng

      Posté par  (site web personnel) . Évalué à 2. Dernière modification le 03 mars 2021 à 12:34.

      Je viens de tester OCRmyPDF sur tes conseils et ça marche plutôt bien : j'ai pu faire une recherche sur le pdf, et trouver les pages qui m'intéressent.

      Le paquets est disponible sur ma distrib en plus \o/

      Voici les commandes pour les feignasses :
      sudo apt install ocrmypdf tesseract-ocr-fra
      ocrmypdf Manuel.pdf Manuel-ocr.pdf

      S'il y a un problème, il y a une solution; s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

  • # SANE + ArgyllCMS + gImageReader + Tesseract OCR + noteshrink | ImageMagick

    Posté par  (site web personnel) . Évalué à 10.

    Je me suis organisé autour de ces outils (avec des scripts pour automatiser tout ce qui peut l'être) :

    • Scan en 300 dpi avec scanimage (SANE) (gros fichier bien lourd)
    • Correction des couleurs avec cctiff d'ArgyllCMS (optionnel)
    • gImageReader (version Qt dans mon cas) pour piloter la reconnaissance de caractères
    • Reconnaissance des caractères elle-même faite avec Tesseract OCR
    • Si les documents sont plutôt textuels et avec peu de couleurs différentes, utilisation de noteshrink pour produire des PNG 300 dpi tout petits (300 à 400 KiB pour un A4)
    • Si les documents contiennent trop d'images, utilisation de convert d'ImageMagick pour réduire les scans en JPEG de 150 dpi
    • Création d'un PDF avec les diverses pages de taille réduite

    Quelques remarques complémentaires :

    • Il faut au moins 300 dpi pour avoir une bonne reconnaissance de caractères
    • 150 dpi suffisent ensuite quand on veut consulter le document
    • Le bon alignement du texte scanné est important, un écart de rotation de moins de 1 % suffit à passer d'un texte reconnu pour l'essentiel à un texte illisible ; d'où l'utilisation de gImageReader qui permet de vérifier et corriger facilement tout cela
    • La correction des couleurs, c'est vraiment parce que j'avais une cible de calibration sous la main…

    Sinon, il y a Paperwork (https://openpaper.work/fr/) qui fait tout ce boulot de manière très automatisée (et donc très productive), à condition que les principes de travail de l'auteur te conviennent.

  • # Processus simple et rapide.

    Posté par  . Évalué à 10. Dernière modification le 02 mars 2021 à 15:39.

    Ah zut, je viens de m'intéresser longuememnt à la question et j'ai un brouillon de dépêche à finir.

    Que cherches-tu vraiment ? Parce que la sortie en texte brut, c'est la fonction de base des OCR.

    Le processus est très simple : un scan de bonne qualité -> OCR -> relecture.

    C'est le premier point qui est compliqué : pour obtenir une bonne image il faut la retoucher. J'utilise un processus plus simple que Boa Treize, avec des outils conçus exprès pour ça. Le site de Tesseract contient une page merveilleuse avec des outils pour améliorer la qualité du scan que j'ai presque tous essayés. Il y a des scripts et des outils graphiques.

    Si tu as beaucoup de scans à faire, installe OpenCamera sur ton smartphone, pouse-le sur une pile de bouquins et lance le mode rafale. Tu dois pouvoir tourner à 20 pages minutes. Ensuite il te faudra le script de dewarping indiqué sur la page de tesseract.

    NB : le meilleur OCR actuel sous Windows c'est ReadIris. Il fait beaucoup moins de petites erreurs que Tesseract qui est le meilleur OCR libre actuel (IMHO).

    • [^] # Re: Processus simple et rapide.

      Posté par  (site web personnel, Mastodon) . Évalué à 2.

      J’aimerais justement éviter le smartphone. Y’a des scanners particuliers à conseiller ? J’aimerais également éviter les scanners plats. Un scanner dans lequel j’enfile les pages me conviendrait très bien.

      Mes livres CC By-SA : https://ploum.net/livres.html

      • [^] # Re: Processus simple et rapide.

        Posté par  . Évalué à 7. Dernière modification le 03 mars 2021 à 15:26.

        La solution smartphone est beaucoup plus efficace qu'un chargeur si on l'utilise avec OpenCamera et le script de page_dewarp, regarde la photo c'est parlant.

        Les scanners avec chargeurs de documents sont pour la plupart des chargeurs de bureau. Je n'ai eu sous la main que des Brother et des Ricoh (plus ses marques dérivées : NRG, Nashuatec, etc.), ils fonctionnent bien sous Linux avec des pilotes propriétaires. Mes modèles ont 10, 15 et 20 ans, et sont tous de la récup. Le pilote Brother a le bon goût de n'être qu'un petit binaire appuyé sur Sane. Il se script donc très facilement.

        Attention, les chargeurs ont la réputation d'abîmer les documents. Pour ma part, je viens de numériser sans aucun problème un livre des années 50, malgré son papier cassant (178 scans).

        Les scans avec le chargeur, déjà très propres, ont été améliorés avec Noteshrink, ImageMagick et unpaper. Il y a des optimisations minuscules qui ont de gros effet sur Tesseract, en particulier la taille optimisée des majuscules, le bord blanc autour de la page et le redressement («deskewing»)dont a parlé BoaTreize. Tout ça est fait par un petit script Perl que je peux t'envoyer.

        Et continues de poser des questions, ça va me faire le texte de la dépêche ! :-)

        • [^] # Re: Processus simple et rapide.

          Posté par  (site web personnel) . Évalué à 2.

          Et continues de poser des questions, ça va me faire le texte de la dépêche ! :-)

          et ne pas oublier d'y inclure le script Perl! (s'il vous plaît)

          Pourquoi bloquer la publicité et les traqueurs : https://greboca.com/Pourquoi-bloquer-la-publicite-et-les-traqueurs.html

          • [^] # Re: Processus simple et rapide.

            Posté par  . Évalué à 4. Dernière modification le 03 mars 2021 à 23:31.

            Ce script sert juste à lancer les différents outils. Rien d'extraordinaire. Il est un peu inutilement compliqué dans le but de me faire réapprendre Perl, plus pratiqué depuis 5 ans. Les commentaires mélangent anglais et français.

            #!/usr/bin/perl
            use strict; 
            use warnings; 
            
            # Le script prend les scans, les repagine (le livre 
            # est reliés en cahiers, décousus pour les scans), 
            # et met les pages dans un dossier temporaires. 
            # Les fichiers y sont retravaillés puis copiés dans 
            # un dossier pour l'OCR.
            #
            # Les paramètres fins sont à adapter au type de scan.
            #
            
            # reliure de latin religare
            # cahier de reliure = Section (bookbinding)
            # In bookbinding, a section, gathering, or signature is a group of sheets folded in half. 
            # In medieval manuscripts, a gathering, or quire, was most often formed of 4 folded sheets
            # La technique du cahier est née avec le développement de la forme codex. 
            
            use File::Basename; 
            use Image::Magick;
            # à utiliser pour gérer les chemins Win, Mac, Linux…
            # require File::Spec; 
            
            # TODO
            # Page dewarping if needed
            #    from https://mzucker.github.io/2016/08/15/page-dewarping.html
            # B&W binarisation  or TEXTCLEANER ?
            #   http://www.fmwconcepts.com/imagemagick/textcleaner/index.php
            
            #
            # front and back cover are named couv
            # unnecessary scanned files are named 
            # other scanned files are named with the page odd number
            #
            
            # taille des cahiers (feuilles x 2)
            my $sheetNumber = 8 ; # quire size x2
            # pourcentage pour redimensionner (maj ~= 33px)
            my $percent = 92;
            # scans directory (base directory)
            my $baseDir = '/home/toto/Projets/Livre'; # FIXME le choper avec 'pwd'
            # working dir
            my $tmpDir = '_tmp';
            # final dir (OCR ready)
            my $ocrDir = 'ocr';
            # FIXME access rights
            # $dirMode = 644;
            
            # se placer dans le bon répertoire
            # créer les répertoires temporaires et finaux
            chdir $baseDir || die "Could not go in dir $baseDir\n";
            mkdir ( $tmpDir ) unless -e $tmpDir;  # $dirMode ?
            mkdir ( $ocrDir ) unless -e $ocrDir;  # $dirMode ?
            
            # get the file list, all names are odd numbers
            # put it in a hash with key = page number, value = file name
            my @tmpList = listFiles( $baseDir,'jpg' );
            my %files = hashList( @tmpList );
            
            # create individual pages
            # Unfold();
            
            # improve quality with noteshrink, unpaper and further enhancement
            chdir $tmpDir;
            
            callUnpaper('ppm');
            # callNoteshrink('-U');
            # callSmallOperations('-N');
            
            # callNoteshrink('ppm');     # creates -N files
            # callSmallOperations('-N'); # creates -SO files
            # callUnpaper('-SO');        # creates -U files
            
            Ready('-SO');
            
            #
            # functions
            #
            
            # Noise Removal with noteshrink
            #   https://github.com/mzucker/noteshrink
            # -p % of pixels to sample for background( default 5)
            # -v background value threshold % (default 25)
            # -s background saturation threshold % (default 20)
            # -S do not saturate colors
            # -w make background white
            # -n number of output colors (default 8)
            # -b output PNG filename base
            sub callNoteshrink {
                my ( $match ) = @_;
                @tmpList = listFiles( "$baseDir/$tmpDir",$match );
                print scalar @tmpList . " files to optimize with noteshrink : \n\n";
            
                foreach my $file( @tmpList ) {
                    # empty pages makes it crash, stupid hack
                    next if $file eq '1.ppm';
                    next if $file eq '2.ppm';
                    next if $file eq '4.ppm';
                    next if $file eq '176.ppm';
                    # remove extension
                    my $fileName  = fileName($file);
                #     '-v10', '-n12', '-S', 
                    my @args      = ( "$baseDir/noteshrink-master/noteshrink.py", '-w', "-b$fileName", $file );
                    system(@args) == 0 or die "system @args failed (file is $file): $?";
                }
                print scalar @tmpList . " png files created by noteshrink.\n";
            
                @tmpList = listFiles( "$baseDir/$tmpDir",'png' );
                print scalar @tmpList . " png files to convert in ppm \n";
                # convert files to ppm
                foreach my $file( @tmpList ) {
                    my( $image, $x, $filename );
                    $image = Image::Magick->new;
                    $image->Read( $file );
            
                    $filename = fileName($file);
                    # remove 0000 from noteshrink
                    $filename =~ s/0000$//;
                    $x = $image->Write( "$filename-N.ppm" );
                }
                unlink @tmpList;
            
                print scalar @tmpList . " png files converted to ppm. All png deleted. \n\n";
            }
            
            # small operations
            sub callSmallOperations {
                my ( $match ) = @_;
                @tmpList = listFiles( "$baseDir/$tmpDir",$match );
                print "Around " . scalar @tmpList . " files to rework : \n\n";
            
                foreach my $file( @tmpList ) {        
                    my( $image, $w, $h, $x, $filename );
            
                    $image = Image::Magick->new;
                    print "Opened $file \n";
                    $image->Read( $file );
                    ( $w,$h ) = $image->Get( 'width','height' );
                    print "  size is $w x $h pixels, ";
            
                    # rescale to get optimal capital letter size > 33 pixels
                    # not automaticaly detected, gives manual percentage
                    $w = $w * $percent/100;
                    $h = $h * $percent/100;
                    print "optimize capital letter size … \n";
                    $x = $image->Resize( width=>$w, height=>$h );
            
                    # remove Scanning border if any
                    # FIXME   -trim avec +repage à cause des traitements suivants
            #         print "remove scanning border … ";
            #         $image->Set( fuzz=>'5%' );
            #         $x = $image->Trim();
            
                    # add small white borde to help OCR 
                    print "  add a 20 pixels white border … \n";
                    $x = $image->Shave( geometry=>'20x20' );
                    $x = $image->Border( geometry=>'20x20+20+20', bordercolor=>'white', compose=>'Over' );
            
                    # write image
                    $filename = fileName($file);
                    $x = $image->Write( "$filename-SO.ppm" );
                    print "  $filename.ppm saved. \n";
                    undef $image;
                }
                print "\n" . scalar @tmpList . " ppm files reworked.\n\n";
            }
            
            # unpaper 
            # -ni intensity, -noisefilter-intensity intensity 
            #  Intensity with which to delete individual pixels  or tiny clusters of pixels. 
            # Any cluster which only contains intensity dark pixels together will be deleted. (default: 4)
            # -li ratio, --blurfilter-intensity ratio
            # Relative intensity with which to delete tiny clusters of pixels. 
            # Any blurred area which contains at most the ratio of dark pixels 
            # will be cleared. (default: 0.01)
            # -gt ratio, --grayfilter-threshold ratio
            # Relative intensity of grayness which is accepted 
            # before clearing the grayfilter mask in cases where 
            # no black pixel is found in the mask. (default: 0.5)
            # w threshold, --white-threshold threshold 
            #  Brightness ratio above which a pixel is considered white. (default: 0.9)
            sub callUnpaper {
                my ( $match ) = @_;
                @tmpList = listFiles( "$baseDir/$tmpDir",$match );
                print "Around " . scalar @tmpList . " files to optimize with unpaper : \n\n";
                foreach my $file( @tmpList ) {
                    my $filename = fileName( $file );
                    # unpaper can't overwrite, remove existing files
                    $filename = "$filename-U.ppm";
                    unlink $filename if -e $filename ;
                    # TODO enlever plus
            #     '--blurfilter-intensity','1', 
            #     '--grayfilter-threshold','1',
            #     '--noisefilter-intensity','1',
            #     '--white-threshold','0.9',
                    my @args = ( "unpaper", 
                                 $file, $filename );
                    system(@args) == 0 or die "system @args failed: $?";
                }
                print scalar @tmpList . " new ppm files created.\n\n";
            }
            
            
            # files ready to move in OCR
            sub Ready {
                my ( $match ) = @_;
                @tmpList = listFiles( "$baseDir/$tmpDir",$match );
                print "Around " . scalar @tmpList . " files to move to $ocrDir : \n";
            
                foreach my $file( @tmpList ) {        
                    my( $image, $x );
                    $image = Image::Magick->new;
                    $image->Read( $file );
                    # name update
                    my $key = fileName($file);
                    my $name = $files{$key};
                    $x = $image->Write( "$baseDir/$ocrDir/$name" );
                    print "  $name saved in $ocrDir folder. \n";
                }
                print "Finished. \n\n"
            }
            
            # Create temporary individual page's files. 
            # Don't forget all file's name are odd
            sub Unfold {
                print "\n\n" . scalar @tmpList . " files to unfold … ";
                # without cover files, loop is ((scalar @tmpList) / $sheetNumber) times 
                # remove unnecessary files from the loop first
                my $zeroFiles = ( scalar @tmpList ) % $sheetNumber;
                my $goodFiles = ( scalar @tmpList ) - $zeroFiles;
                print "$zeroFiles files not kept, $goodFiles files to paginate … \n";
            
                #
                # 13ème apôtre = in-4° de 11 cahiers
                # 11 cahiers -> 44 feuilles -> 88 fichiers + couverture + un scan à remonter = 90 fichiers
                # boucler 11 fois
                #  sur un cahier de 8 fichiers, 1er: $first impair, 8ème: $last pair
                #  boucler 8 fois :
                #   couper fichier en 2 : pair / impair
                #   écrire pair, impair
                #   pair = pair- 2 impair = impair + 2
                #
                # first page number from quire is odd
                my $first = 1;
                # start key in %files, all keys are odd numbers
                my $key   = $first;
                # every $sheetNumber files (11 times)
                for ( my $i=0;$i<$goodFiles/$sheetNumber;$i++ ) {
                    # last page number from quire, even
                    my $last  = $first + (2 * $sheetNumber) - 1;
                    for ( my $i=0;$i<$sheetNumber;$i++ ) {
                        my $file = $files{$key};
                        print "Will paginate $file … ";
                        ( $last, $first ) = paginate( $file, $last, $first );
                        print "\n";
                        $key = $key + 2;
                    }
                }
            
                print "done, $goodFiles pages processed, " . $goodFiles*2 . " files created in $tmpDir. \n\n";
            }
            
            #
            # utilities
            #
            
            # remove extension and space
            sub fileName {
                my ( $f ) = @_;
                $f =~ s/\.[a-z]+$//g;
                $f =~ s/\-[A-Z]+$//g;
                $f =~ s/\s+//;
                return $f;
            }
            # coupe, nomme, écrit
            # read all file formats supported by IM, but write in ppm format
            sub paginate {
                my ( $file, $even, $odd ) = @_;
            
                my( $image, $image1, $w, $h, $x );
                $image = Image::Magick->new;
                $image->Read( $file );
                $image1   = $image->Clone();
                ( $w,$h ) = $image->Get( 'width','height' );
            
                $w  = $w / 2;
                # first half is even
                $x = $image->Crop ( geometry=>"$w x $h + 0 + 0" );
                $x = $image->Write( "$tmpDir/$even.ppm" );
                print "created $tmpDir/$even.ppm ";
                # second half is odd
                $x = $image1->Crop ( geometry=>"$w x $h + $w + 0" );
                $x = $image1->Write( "$tmpDir/$odd.ppm" );
                print "and $tmpDir/$odd.ppm";
                # empty memory
                undef $image; 
                undef $image1;
            
                $even = $even - 2;
                $odd  = $odd + 2;
                return $even, $odd;
            }
            
            # extract page number, hash with number => name of file
            sub hashList {
                my ( @list ) = @_;
                my %hash;
                foreach my $l ( @list ) {
                     my $v = $l;
                     $l =~ s/[^0-9]+//g;
                     $hash{$l} = $v;
                }
                return %hash;
            }
            
            # extraire les nombres, créer un hash nombre => fichier,
            # sortir une liste triée par la clé du hash
            sub orderedList {
                my ( @list ) = @_;
                my %hash;
                foreach my $l ( @list ) {
                     my $v = $l;
                     $l =~ s/[^0-9]+//g;
                     $hash{$l} = $v;
                }
                my @keys = sort { $a <=> $b } keys %hash;
                my @olist;
                foreach my $key ( @keys ) {
                    next if $hash{$key} =~ m/\s0/;  # fichiers 00
                    push (@olist, $hash{$key});
                }
                return @olist;
            }
            
            # directory content (not recursive)
            # FIXME should use file type instead of extension
            sub listFiles {
                my ( $dir, $ext )  = @_;
                opendir( D,$dir ) || die "Could not open dir $dir\n";
                # files and dir but (. and ..) 
                my @content = grep { !/^\.\.?$/ } readdir D;
                closedir D;
                # remove dir
                my @files; 
                foreach my $name (@content) {
                    next if -d $name ;
                    push @files, $name if $name =~ m/$ext/;
                }
                return @files;
            }
            • [^] # Re: Processus simple et rapide.

              Posté par  . Évalué à 2.

              Les scans portaient tous le nom du livre (ou du chapitre) plus le numéro de la page impaire (quand on découd les cahiers de reliure, on obtient des feuilles imprimées recto-verso avec à gauche une page paire et a droite une impaire). La fonction orderedList met les noms dans un hash avec le numéro de page impaire en index.

              «13ème apôtre» dans les commentaires est le titre du livre, pas une instrucion secrête!

  • # Le cloud?

    Posté par  (site web personnel) . Évalué à 10.

    Je ne comprends même pas que l'on puise envisager d'envoyer des documents scannés sur du cloud qu'on ne maîtrise pas.

    Il existe plusieurs solutions, dont paperwork-gtk (et il y en a d'autres), ça reste en local, ça fonctionne très bien.

    Pourquoi bloquer la publicité et les traqueurs : https://greboca.com/Pourquoi-bloquer-la-publicite-et-les-traqueurs.html

    • [^] # Re: Le cloud?

      Posté par  (site web personnel, Mastodon) . Évalué à 7.

      Parce qu’on est sur linuxfr. Mais regarde sur un site moins libriste : https://old.reddit.com/r/typewriters/comments/lvz8sz/whats_your_strategy_to_digitize_your_typewriting/

      J’ai demandé explicitement pas de cloud mais une partie des commentaires s’enthousiasme néanmoins pour Google Drive. Un outil qui se connecte à un cloud proprio, c’est la norme aujourd’hui.

      Mes livres CC By-SA : https://ploum.net/livres.html

      • [^] # Re: Le cloud?

        Posté par  . Évalué à 3.

        … et ils ne se posent pas de questions sur le fait que si google (ou équivalent) scanne si vite et si bien ce qu'on envoie sur son cloud, c'est parce que ça lui permet de pomper le contenu du pdf… !? (alors que l'image seule ne lui sert pas à grand-chose, pour le flicage ciblage de la population)

        • [^] # Re: Le cloud?

          Posté par  (site web personnel, Mastodon) . Évalué à 8.

          Ben je sais pas toi mais approximativement 99,9% des personnes dans ma ville possède dans la poche une balise GPS qui permet à Google ou Apple de suivre leur moindre faits et gestes. La majorité d’entre eux communiquent via des systèmes qui permet à Facebook de surveiller toutes leurs communications et leurs habitudes. Et pour ceux qui n’utilisent pas Apple Pay ou Google Pay, leurs habitudes de consommation sont observées grâce à un accord de partage de données entre Mastercard et Google. Une fois au travail, l’immense majorité des documents et des échanges professionnels transite, en clair, par Google et/ou Microsoft.

          Du coup, hein, quand tu dois scanner trois brols, je pense que c’est le cadet de tes soucis de savoir que Google peut accéder aux documents.

          Mes livres CC By-SA : https://ploum.net/livres.html

    • [^] # Re: Le cloud?

      Posté par  . Évalué à 2.

      Le développeur de Paperwork faisait des journaux/dépêches ici il y a quelques temps. N'est-il plus dans les parages ?

    • [^] # Re: Le cloud?

      Posté par  . Évalué à 10.

      Moi non plus je ne comprend pas. Voici toute de même une petite histoire d'horreur sur le sujet.

      On a une imprimante multifonction au boulot. Le scanner se configure simplement : on met son mail dans un raccourci une première fois et voilà. Ensuite on met ses docs dans le scanner, on tape sur le raccourci "Jean-Doux" et zou, on a les docs dans sa boîte mail.

      Et puis un jour, je vois qu'on ne peut créer que 10 (ou 12) comptes pour les scans. Ne comprenant pas bien d'où vient cette limite, je m'intéresse de plus près à la chaîne technique entre le scanner et ma mailbox. Donc je scanne un truc, et je regarde les en-têtes de mail reçus de la part du scanner.

      Et là, horreur ! Je découvre que l'imprimante envoie les documents à un webservice hébergé sur AWS (aux États-Unis d'après l'IP), qui me le renvoie ensuite en PDF par mail. Me voilà doublement contrarié : je voulais justement couper l'accès à Internet à cette imprimante, mais la fonction scanner ne peux pas fonctionner sans, et aussi je pense à tous ces contrats et NDAs qui sont passés par chez Amazon ! Les bras m'en tombent.

      Le calme revenu, je cherche ensuite comment indiquer à l'imprimante de bien vouloir utiliser mon serveur SMTP. J'ai du mal voir, ce n'est pas possible autrement. En effet, c'est possible, mais juste pour recevoir les messages d'erreur ou les logs, pas pour recevoir les scans !

      Au final, je contourne le problème : il y a un mode dans lequel l'imprimante peut déposer les PDFs sur un serveur SFTP interne installé pour l'occasion. Et donc ce serveur SFTP transfère les docs déposés par mail (avec quelques modifs à ftpmail fourni dans proftpd). Tout reste dans mon réseau interne, ouf !

      Tout ça pour dire que "le cloud" c'est tellement trop pratique que même du matériel "pro" va considérer que ce n'est pas un problème ou une question d'envoyer tes documents (parfois des choses très confidentielles) à l'autre bout du monde. Et va le proposer comme option par défaut. Bien sûr la doc n'en fait mention nulle part.

      • [^] # Re: Le cloud?

        Posté par  . Évalué à 4.

        Pour ma part, je trouve ce retour d'expérience effarant … et à partager au max si c'est confirmé.
        Toujours dans le cas où c'est techniquement vrai, je pense qu'on ne risquerait pas de diffamation à donner le nom de la marque/modèle exact en cause, afin d'attirer la vigilance du public un brin sensibilisé qui parcours ce site ?
        Merci d'avance, car je suis très curieux de connaitre le modèle à fuir absolument …

        • [^] # Re: Le cloud?

          Posté par  . Évalué à 2.

          J'ai revérifié tout à l'heure. La doc (qui recouvre 3-4 modèles proches) dit qu'on peut envoyer les scans directement à son serveur SMTP (petit moment de solitude là :-/). Sauf qu'on peut pas sur ce modèle précis, une erreur dans la doc sans doute (ça va, je suis pas encore sénile :D).

          J'ai aussi retrouvé les refs vers le webservice et ses CGU, qui sont relativement raisonnables (par-rapport à un revendeur de publicité), mais posent quand même problème quand on scanne un NDA.

          La doc qui dit comment envoyer le scan vers un mail, mais qui ne fonctionne pas.

          La doc qui dit comment utiliser le webservice aux US, et ses conditions d'utilisation.

          Le point le plus gênant dans cette histoire c'est qu'il est très difficile de savoir tout ça avant l'achat.

          En gros la logique classique de l'imprimante d'entreprise, à savoir "l'imprimante sait chercher les adresses mails dans mon LDAP et envoyer un mail sur le serveur mail de mon choix" n'est pas supportée.

          Pour nuancer, je dirais que pour des gens qui utilisent Google Drive, Dropbox ou poser leur fichier sur un partage Sharepoint, SMB ou FTP, oui c'est super, ils peuvent envoyer les scans direct dedans.

          Bref, au prochain achat d'imprimante, je serais très vigilant.

    • [^] # Re: Le cloud?

      Posté par  (site web personnel) . Évalué à 1.

      Paperwork est en effet très bien. Les documents scannés sont enregistrés sous forme d'images, avec à côté un fichier contenant les mots scannés et leurs positions. Il ne doit pas être trop compliqué, si le document d'origine est un texte, de coller ensuite les mots bout-à-bout en fonction de leurs coordonnées…

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.