如何在 OCR 运行前修复倾斜的文档

发布: (2025年12月2日 GMT+8 13:37)
5 min read
原文: Dev.to

Source: Dev.to

封面图片:在 OCR 运行前如何修复倾斜的文档

概览

你是否曾尝试从收据照片或扫描的合同中提取文本?如果有,你可能已经知道结果时好时坏。也许纸张倾斜、光线不均,或者图片颗粒感较强。正因为如此,你的OCR 引擎无法正确读取文字。

文档检测可以解决这些问题。它在图像中找到文档,校正其倾斜并进行清理。这让计算机更容易读取文本。

为什么 OCR 在真实图像上会失效

OCR 工具通常期望的是完美的图片。它们是在平整、光亮、正向的文字上进行训练的。用户拍摄的真实照片很少完美——用户常常以奇怪的角度拍摄账单、在凌乱的桌面上捕捉身份证,或上传纸张移动后的扫描件。将这些原始图像直接送入 OCR 工具,往往会得到混乱、缺失或顺序错误的文本。

Filestack 文档检测能够自动处理这些凌乱的输入。它找到纸张的边缘,校正角度,并清理图像,输出一张干净的图片,准备进行文本提取。

工作原理

文档检测使用两种互补的方法:

  1. 边缘检测 – 在图片中寻找线条和边缘。
  2. 机器学习模型 – 一个在数千张文档照片上训练的神经网络。

整个过程分为四个步骤:

  1. 使用模型创建文档的映射。
  2. 定位纸张的四个角点。
  3. 对图像进行变换,使文档填满整个画面。
  4. (可选)去除噪点、加深阴影、提亮高光。

三种检测模式

文档检测提供三种模式,可根据需求选择。

坐标模式

返回文档角点的坐标。

API 调用

doc_detection=coords:true

响应(JSON)

{
  "coords": {
    "x": 106,
    "y": 464,
    "width": 580,
    "height": 231
  }
}

当你需要绘制框、自己裁剪图像,或向其他系统提供文档位置时使用此模式。

变形模式

在不改变颜色或亮度的情况下校正图像。

变形模式示例

API 调用

doc_detection=preprocess:false

结果是一张新图像,文档填满整个画面,保留原始的视觉特性。当你想要一张已校正的图片但计划自行进行后期处理时选择此模式。

预处理模式

同时进行变形和视觉增强(降噪、对比度提升)。

预处理模式示例

API 调用

doc_detection=preprocess:true

这是默认设置。清理步骤会降低噪点并锐化文字,非常适合 OCR 任务。

完整 API 示例

文档检测通过在处理 API的 URL 中添加参数来使用。所有请求都需要安全策略和签名。

  • 获取坐标

    https://cdn.filestackcontent.com/security=p:POLICY,s:SIGNATURE/doc_detection=coords:true/HANDLE

  • 获取变形后的图像

    https://cdn.filestackcontent.com/security=p:POLICY,s:SIGNATURE/doc_detection=preprocess:false/HANDLE

  • 获取预处理后的图像

    https://cdn.filestackcontent.com/security=p:POLICY,s:SIGNATURE/doc_detection=preprocess:true/HANDLE

与 Resize 链接使用

图像必须 ≤ 2000 × 2000 像素。对于更大的文件,可先添加 resize 步骤:

https://cdn.filestackcontent.com/security=p:POLICY,s:SIGNATURE/resize=height:1500/doc_detection=preprocess:true/HANDLE

与 OCR 链接使用

你可以直接将清理后的图像发送到 Filestack OCR:

https://cdn.filestackcontent.com/security=p:POLICY,s:SIGNATURE/doc_detection=preprocess:true/ocr/HANDLE

示例收据的 OCR 响应(摘录):

{
  "text": "Manila Automated Fare\nCollection System\nRECEIPT\nTax ID:\nReceipt No:\nDate and Time:\nStation Name:\nPOS ID:\nOperator ID:\nCard ID:\nCard Name:\n004-1-231125-1134-53\n23 NOV 2025 11:34\nGil Puyat\nPOI, POS.A.02.00.03\n100108195\n6378050082232813\nStandard SVC\nAdd value\nAdd Value:\nold Remaining value:\n42.00\n100.00\nNew Remaining value:\n142.00\nAmount Payable:\n100.00\nAmount Received:\n100.00"
}
Back to Blog

相关文章

阅读更多 »

我终于消除的一个小摩擦

封面图片:我最终去除的一个小摩擦 https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fde...

不要让你的 bundles 超重

说实话:我们都在乎 bundle size。多年来,bundlesize 是首选工具,但它现在已经过时且不再维护。安全检查开始标记…