You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Google Cloud Vision API区分PDF中的打印与手写文本?

区分Google Cloud Vision API返回的打印文本与手写文本

核心方案:利用Vision API的手写检测属性

Google Cloud Vision API的异步PDF批量处理接口(asyncBatchAnnotateFiles)返回的结果中,每个文本块(Block)的property字段会包含手写检测标记。通过解析这个字段可以精准区分打印与手写文本,这是最可靠的原生方案。

Node.js实现步骤:

  1. 调用异步PDF处理接口时,请求需包含DOCUMENT_TEXT_DETECTION特征(默认已启用布局分析)。
  2. 处理响应时,遍历每个页面的textAnnotations下的blocks数组,检查每个Block的property.detectedHandwriting属性:
    • 若该属性存在且值为true,则为手写文本
    • 否则为打印文本

代码示例:

const { ImageAnnotatorClient } = require('@google-cloud/vision').v1;
const client = new ImageAnnotatorClient();

async function processPdf(pdfPath) {
  const request = {
    requests: [
      {
        inputConfig: {
          mimeType: 'application/pdf',
          gcsSource: { uri: `gs://your-bucket/${pdfPath}` }, // 需将PDF上传至GCS存储桶
        },
        features: [{ type: 'DOCUMENT_TEXT_DETECTION' }],
        outputConfig: {
          gcsDestination: { uri: `gs://your-bucket/output/` },
        },
      },
    ],
  };

  const [operation] = await client.asyncBatchAnnotateFiles(request);
  const [response] = await operation.promise();

  // 遍历每页结果
  response.responses.forEach((pageResponse, pageIndex) => {
    console.log(`第${pageIndex + 1}页结果:`);
    pageResponse.fullTextAnnotation.pages.forEach(page => {
      page.blocks.forEach(block => {
        const isHandwritten = block.property?.detectedHandwriting?.value === true;
        // 拼接文本块内容
        const text = block.paragraphs
          .map(p => p.words.map(w => w.symbols.map(s => s.text).join('')).join(' '))
          .join('\n');
        
        console.log(`文本类型:${isHandwritten ? '手写' : '打印'}`);
        console.log(`内容:${text}\n`);
      });
    });
  });
}

processPdf('your-document.pdf').catch(console.error);

辅助方案:结合页面位置过滤

针对你的PDF有固定页眉页脚的场景,可以结合文本块的坐标范围进一步验证:

  • 预先定义页眉页脚的坐标区间(比如页面顶部10%、底部10%区域)
  • 落在该区间的文本直接判定为打印文本;中间区域的文本再结合手写检测属性确认,减少误判概率

注意事项

  • 必须使用异步批量处理接口(asyncBatchAnnotateFiles),同步的documentTextDetection接口不返回手写检测属性
  • 需将PDF文件上传至Google Cloud Storage(GCS),API不支持直接上传本地PDF文件

内容的提问来源于stack exchange,提问作者Lakshay Nagpal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 11:47:36