2013-05-06 30 views
1

我還有另一個障礙,用我的GOOGLE DRIVE SDK Android應用程序來爬。我使用嚴格控制的索引字段上傳掃描圖像 - 本地字典中用戶定義的「標記」。例如XXX.JPG有索引詞「汽車」+「保險」。下面是一個簡單的代碼片段:我可以在JPEG文件上停止OCR嗎?

... 
    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後處理,從而使我的系統的字典無法使用。我假設我可以使用自定義的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襯墊,我可以根據要求

肖恩

回答

2

在插入它供給,設置OCR參數設置爲false:

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

謝謝,再次。 – seanpj 2013-05-07 02:33:59

+0

由於我無法輕易地將文檔翻譯成我的java結構,所以我很難正確地完成這件事。我已經看到[files:insert](https://developers.google.com/drive/v2/reference/files/insert)的引用,但無法找出正確的java語法。此外,默認情況下,引用聲明'ocr'爲'false'。去搞清楚。我會測試它並會讓你知道它是如何發生的。我得在某個地方/某個時間趕上你,給你買一瓶啤酒。再次感謝,謝恩 – seanpj 2013-05-07 02:41:26

+0

謝謝。 OCR和useContentAsIndexableText默認爲false,我們索引提取的文本很奇怪。與此同時,我會嘗試在這裏重現這個問題。 – 2013-05-07 10:14:51

相關問題