我可以在JPEG文件上停止OCR吗?

时间:2013-05-06 18:34:15

标签: android google-drive-api

我的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图像变得不可见。所以问题是:我可以上传带有自定义索引(可索引或描述字段)的MIME“image / jpeg”文件,但是要阻止GOOGLE对我的文件进行OCR并添加我不打算拥有的索引吗? 更具体地说,我搜索“汽车保险”,而不是我的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云端硬盘文件的块。两个非标准操作是:
1 /重置文件的“修改”日期以强制创建文件的日期 - 经过测试,工作正常 2 /停止干扰我的应用程序索引方案的OCR进程 - 将很快测试并在此更新

为简单起见,我没有包含“findInGOO()”方法的实现。这是非常简单的2班轮,我可以根据要求提供它

肖恩

1 个答案:

答案 0 :(得分:2)

插入时,将ocr参数设置为false:

service.files().update(body, content).setOcr(false).execute();