Changeset 75218 in spip-zone


Ignore:
Timestamp:
Sep 2, 2013, 1:15:34 PM (6 years ago)
Author:
lesage.sylvain@…
Message:

Stocker les pages d'un PDF sous forme de JSON, au lieu de les concatener

Si un PDF est lié à des images PNG par le plugin doc2img, remplir le
champ ocr du PDF dans le format JSON suivant:
{"1":"texte page 1","3":texte page 3"}
Le texte est en UTF8 dans la base de données, pour permettre l'indexation
des mots.
Dans le cas des documents normaux, ocr contient directement le texte, pas de
format JSON.

Location:
_plugins_/ocr/trunk
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/ocr/trunk/inc/ocr_analyser.php

    r75130 r75218  
    6464                        } else {
    6565                                // On teste si le document est une image générée par doc2img (mode='doc2img' + présente dans spip_documents_liens, liée avec un objet 'document')
    66                                 $id_document_original = sql_getfetsel("L2.id_objet AS id_document_original","spip_documents as L1 LEFT JOIN spip_documents_liens as L2 ON L1.id_document=L2.id_document","L2.id_document=".intval($id_document).' AND L2.objet="document" AND L1.mode="doc2img"');
    67                                 if ($id_document_original) {
     66                                $resultat_sql = sql_fetsel("L1.page, L2.id_objet AS id_document_original","spip_documents as L1 LEFT JOIN spip_documents_liens as L2 ON L1.id_document=L2.id_document","L2.id_document=".intval($id_document).' AND L2.objet="document" AND L1.mode="doc2img"');
     67                                if ($resultat_sql) {
     68                                        $page = $resultat_sql['page'];
     69                                        $id_document_original = $resultat_sql['id_document_original'];
    6870                                        // Si oui, on colle le texte dans le champ "ocr" du document original (on ne teste pas s'il y a plusieurs documents, ça ne devrait pas)
    69                                         spip_log('Modification du champ "ocr" du document id_document='.$id_document_original.' - c\'est le document original qui avait été converti par doc2img' , 'ocr');
     71                                        // Dans ce cas, le champ "ocr" est un tableau JSON des pages du document
     72                                        spip_log('Modification du champ "ocr" du document '.$id_document_original.' (page '.$page.') - c\'est le document original qui avait été converti par doc2img' , 'ocr');
    7073                                        $ocr_original = sql_getfetsel("ocr","spip_documents","id_document=".intval($id_document_original));
    71                                         sql_updateq("spip_documents", array('ocr' => $ocr_original.' '.$texte), "id_document=".intval($id_document_original));
    72                                         // Indique que l'image doc2img a été analysée
     74                                        // Décoder le JSON ou initialiser
     75                                        $ocr_array = $ocr_original ? json_decode($ocr_original, true) : array();
     76                                        // Ajouter la page
     77                                        $ocr_array[$page] = $texte;
     78                                        // Coder le JSON
     79                                        include_spip('ocr_options');
     80                                        $ocr_json = json_encode_utf8($ocr_array);
     81                                        // Insérer dans la base
     82                                        sql_updateq("spip_documents", array('ocr' => $ocr_json), "id_document=".intval($id_document_original));
     83                                        // Indiquer que l'image doc2img a été analysée
    7384                                        sql_updateq("spip_documents", array('ocr_analyse' => 'oui'), "id_document=".intval($id_document));
    7485                                } else {
    7586                                        // sinon, on modifie le champ "ocr" de l'image
    76                                         spip_log('Modification du champ "ocr" du document id_document='.$id_document, 'ocr');
     87                                        spip_log('Modification du champ "ocr" du document '.$id_document, 'ocr');
    7788                                        sql_updateq("spip_documents", array('ocr' => $texte, 'ocr_analyse' => 'oui'), "id_document=".intval($id_document));
    7889                                }
  • _plugins_/ocr/trunk/ocr_administrations.php

    r75130 r75218  
    4646                array('ocr_reinitialiser_totalement_document'),
    4747        );
    48         ecrire_config('palette/palette_public','');
     48
     49        // Forcer l'analyse de tous les documents (changement de format du contenu du champ "ocr")
     50        $maj['0.5'] = array(
     51                array('ocr_reinitialiser_totalement_document'),
     52        );
    4953       
    5054        include_spip('base/upgrade');
  • _plugins_/ocr/trunk/paquet.xml

    r75132 r75218  
    22        prefix="ocr"
    33        categorie="multimedia"
    4         version="0.2.0"
     4        version="0.2.1"
    55        etat="test"
    66        compatibilite="[3.0.11;]"
    77        logo="prive/themes/spip/images/ocr-64.png"
    88        documentation="http://contrib.spip.net/ocr"
    9         schema="0.4"
     9        schema="0.5"
    1010>
    1111        <!--
Note: See TracChangeset for help on using the changeset viewer.