我试图从一个乙烯基唱片书脊的架子的照片中捕获文本-例如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)
这将产生
(至少在我看来是这样),但我没有进一步提取文本。
有没有人有任何想法,使这项工作?也许切片到个别图像的基础上阈值将是值得一试?
1条答案
按热度按时间2uluyalo1#
按照@Christoph拉克维茨的说法,从根本上说这是一项OCR任务,任何手动处理只会使图片降级,避免需要预处理的OCR。
试试这个请求体:
将此答案作为社区Wiki发布,并随时编辑此答案以获取更多信息,以及是否有其他可能的变通方法/直接解决方案。