小编dir*_*lta的帖子

从圆形边框内提取文本

我正在尝试使用 Python 和 OpenCV 开发一个脚本,以检测扫描的仪器图上的一些突出显示区域,并使用 Tesseract 的 OCR 功能输出文本。我的工作流程是首先检测感兴趣区域的大体附近,然后应用处理步骤去除除文本块(线条、边框、噪声)之外的所有内容。然后将处理后的图像输入 Tesseract 的 OCR 引擎。

此工作流程适用于大约一半的图像,但由于文本接触边框而在其余图像上失败。我将在下面展示一些我的意思的例子:

步骤 1:通过使用 InRange 和荧光笔的颜色范围创建蒙版来查找感兴趣的区域。

第 2 步:绘制感兴趣区域的轮廓,裁剪并保存到文件。

--- 引用的代码从这里开始 ---

步骤 3:阈值图像并应用 Canny 边缘检测

步骤 4:轮廓边缘并使用 cv2.approxPolyDP 将它们过滤成圆形并查看顶点大于 8 的边缘。取第一或第二大轮廓通常对应于内边缘。

第 5 步:使用掩码和按位操作,轮廓内的所有内容都被转换为白色背景图像。膨胀和腐蚀用于对图像进行降噪并创建输入 OCR 引擎的最终图像。

import cv2
import numpy as np 
import pytesseract 
pytesseract.pytesseract.tesseract_cmd = 'C:/Program Files (x86)/Tesseract-OCR/tesseract'

d_path = "Test images\\"

img_name = "cropped_12.jpg"

img = cv2.imread(d_path + img_name)  # Reads the image

## Resize image before calculating contour 
height, width = img.shape[:2]
img = …
Run Code Online (Sandbox Code Playgroud)

python ocr opencv tesseract computer-vision

5
推荐指数
1
解决办法
2477
查看次数

从扫描的工程图中提取文本

我正在尝试从扫描的技术图纸中提取文本。出于保密原因,我无法发布实际的绘图,但它看起来与类似,但形状内有更多文本,因此更加繁忙。由于字母相互接触及其周围的边框/符号的问题,问题非常复杂。

我发现一篇有趣的论文正是这样做的,名为“Detection of Text Regions From Digital Engineering Drawings”,作者:Zhaoyang Lu。它位于付费专区后面,因此您可能无法访问它,但本质上它会尝试通过主要两个步骤擦除图像中非文本的所有内容:

1) 擦除线性分量,包括长短隔离线

2)根据笔画连通成分分析,擦除非文本笔画

什么样的 OpenCV 函数有助于执行这些操作?我宁愿不从头开始写一些东西来做这些,但我怀疑我可能不得不这么做。

我尝试使用基于模板的方法来尝试隔离文本,但由于图形之间的文本位置未完全规范化(即使在同一项目中),因此它无法检测第一个扫描图形之后的文本。

python ocr opencv tesseract image-processing

5
推荐指数
1
解决办法
2414
查看次数