opencv 从堆叠的记录/书籍书脊图像中提取文本

mcvgt66p  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(125)

我试图从一个乙烯基唱片书脊的架子的照片中捕获文本-例如x1c 0d1x。我希望最终结果是一个文本字符串数组,每个字符串代表图像中的一条记录。
正如您所看到的,图像包含大量从上到下排列的文本,这些文本具有不同的颜色、质量和失真。
我一直在尝试使用Cloud Vision来提取文本:

# Perform document text detection using Google Cloud Vision API
        response = client.document_text_detection(image=image_data)
        document = response.full_text_annotation

我得到了混合的结果,一些文本被拾起,其他文本没有那么多。
挑战在于,半生不熟的标题片段与完全转录的标题混合在一起,因此很难可靠地解析结果。
我一直在尝试使用cv 2自适应阈值来更清楚地区分每个项目-例如:

# Load the image
image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)

# Apply adaptive thresholding to enhance text contrast
thresh = cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2)

# Save the thresholded image
thresholded_image_path = 'thresholded.jpg'
cv2.imwrite(thresholded_image_path, thresh)

这将产生

(至少在我看来是这样),但我没有进一步提取文本。
有没有人有任何想法,使这项工作?也许切片到个别图像的基础上阈值将是值得一试?

2uluyalo

2uluyalo1#

按照@Christoph拉克维茨的说法,从根本上说这是一项OCR任务,任何手动处理只会使图片降级,避免需要预处理的OCR。
试试这个请求体:

{
  "requests": [
    {
      "features": [
        {
          "type": "TEXT_DETECTION"
        }
      ],
      "image": {
        "source": {
          "imageUri": "https://i.stack.imgur.com/nI2vY.jpg"
        }
      }
    }
  ]
}

将此答案作为社区Wiki发布,并随时编辑此答案以获取更多信息,以及是否有其他可能的变通方法/直接解决方案。

相关问题