如何在OCR转换PDF为Google Doc时手动设置页码范围?
解决方案:指定PDF页码范围进行OCR转换
要实现手动设置页码范围的PDF转Google Doc(带OCR),核心思路是先导出PDF的指定页码片段,再对这个片段进行OCR转换。以下是修改后的代码:
修改后的完整代码
function extractPdfData(){ const ss = SpreadsheetApp.getActiveSpreadsheet() //Get all PDF files: const folder = DriveApp.getFolderById(FOLDER_ID); const files = folder.getFilesByType("application/pdf"); // 示例:转换每个PDF的第2到第5页,可根据需求调整页码范围 const startPage = 2; const endPage = 5; while(files.hasNext()){ let file = files.next(); let fileID = file.getId(); const doc = getTextFromPDF(fileID, startPage, endPage); const data= extractSpecifics(doc.text); } } function getTextFromPDF(fileID, startPage, endPage) { // 导出指定页码范围的PDF片段 const exportUrl = `https://www.googleapis.com/drive/v3/files/${fileID}/export?mimeType=application/pdf&pageRange=${startPage}-${endPage}`; const options = { headers: { 'Authorization': 'Bearer ' + ScriptApp.getOAuthToken() } }; const response = UrlFetchApp.fetch(exportUrl, options); var blob = response.getBlob().setName(`[Pages ${startPage}-${endPage}] ${DriveApp.getFileById(fileID).getName()}`); var resource = { title: blob.getName(), mimeType: blob.getContentType() }; var ocrOptions = { ocr: true, ocrLanguage: "en" }; // 将指定页码的PDF片段转换为带OCR的Google Doc var file = Drive.Files.insert(resource, blob, ocrOptions); var doc = DocumentApp.openById(file.id); var text = doc.getBody().getText(); var title = doc.getName(); // 删除临时生成的Google Doc Drive.Files.remove(doc.getId()); return { name: title, text: text }; }
关键修改说明
- 为
getTextFromPDF新增startPage和endPage参数,用于接收需要转换的页码范围 - 通过
UrlFetchApp调用Drive API的导出接口,指定pageRange参数获取目标页码的PDF片段 - 用这个PDF片段替代原完整PDF进行OCR转换,避免处理不必要的页码
- 在
extractPdfData中可直接定义startPage和endPage的值,按需调整范围
注意:确保你的脚本已启用Drive API(在脚本编辑器的「资源」>「高级Google服务」中开启Drive API)。
内容的提问来源于stack exchange,提问作者Francesco Russo
相关产品推荐
相关产品推荐

