1

GOOGLE DRIVE SDK Android アプリには、さらに別のハードルがあります。厳密に制御されたインデックス フィールド (ローカル辞書からのユーザー定義の「タグ」) を使用して、スキャンした画像をアップロードしています。たとえば、XXX.JPG には "car" + "insurance" というインデックス ワードがあります。簡略化されたコード スニペットを次に示します。

    ...
    body.setTitle("XXX.JPG");
    body.setDescription("car, insurance");        
    body.setIndexableText(new IndexableText().setText("car insurance"));
    body.setMimeType("image/jpeg");
    body.setParents(Arrays.asList(new ParentReference().setId(...)));

    FileContent cont = new FileContent("image/jpeg", new java.io.File(fullPath("xxx.jpg")));

    File gooFl = _svc.files().insert(body, cont).execute();
    ...

繰り返しますが、検索を開始するときを除いて、すべてがうまく機能します。OCR ポスト プロセスからの結果と思われる結果が得られるため、システムの DICTIONARY が使用できなくなります。カスタム MIME タイプを使用できると思いますが、標準の GOOGLE DRIVE アプリケーション (ローカル、ブラウザベース ...) を使用するユーザーには JPEG 画像が見えなくなります。質問は、カスタム インデックス (Indexable または Description フィールドのいずれか) を含む MIME "image/jpeg" ファイルをアップロードすることはできますか?
より具体的に言うと、「自動車保険」を検索すると、この方法でインデックスを作成した 3 つのファイルの代わりに、「自動車」と「保険」が含まれる他の結果 (JPEG スキャン ドキュメント) が手に負えなくなります。私のアプリが望んでいるものではありません。

以下のBurcuのアドバイスに基づいて、コードを次のように変更しました(必要最小限に取り除いたもの)。

 // define meta-data
 File body = new File();
 body.setTitle("xxx.jpg");
 body.setDescription(tags);        
 body.setIndexableText(new IndexableText().setText(tags));
 body.setMimeType("image/jpeg");
 body.setParents(Arrays.asList(new ParentReference().setId(_ymID)));
 body.setModifiedDate(DateTime.parseRfc3339(ymdGOO));
 FileContent cont = 
    new FileContent("image/jpeg",new java.io.File(fullPath("xxx.jpg")));
 String sID = findOnGOO(driveSvc, body.getTitle());
 // file not found on gooDrive, upload and fix the date
 if (sID == null) { 
   driveSvc.files().insert(body, cont).setOcr(false).execute();
   driveSvc.files().patch(gooFl.getId(), body).setOcr(false).setSetModifiedDate(true).execute();
 // file found on gooDrive - modify metadata and/or body   
 } else {
   // modify content + metadata
   if (contentModified) {
    driveSvc.files().update(sID, body, cont).setOcr(false).setSetModifiedDate(true).execute(); 
   // only metadata (tags,...)
   } else {   
     driveSvc.files().patch(sID, body).setOcr(false).setSetModifiedDate(true).execute();
   }
 }
 ... 

Google ドライブのファイルをアップロードまたは変更するブロックです。2 つの非標準操作は次のとおりです
。1/ ファイルの作成日を強制するためにファイルの「変更」日付をリセットする - テスト済み、問題なく動作
する 2/ アプリのインデックス作成スキームに干渉する OCR プロセスを停止する - まもなくテストして更新するここ

簡単にするために、「findInGOO()」メソッドの実装は含めませんでした。これは非常にシンプルな 2 ライナーで、リクエストに応じて提供できます。

ショーン

4

1 に答える 1

2

挿入時に、ocr パラメータを false に設定します。

service.files().update(body, content).setOcr(false).execute();
于 2013-05-07T01:40:47.030 に答える