- 在这个Python脚本中,首先我增加了图像分辨率,以提高OCR的准确性。
- 其次,我对图像应用了许多滤镜,以增加对比度和文本清晰度。
- 第三,我用Tesseract从过滤后的图像中提取文本,但是问题是Tesseract不能清楚地提取数据。
- 并尝试在pytesseract上添加页面分割模式和OCR引擎模式,但没有收到预期的输出。
- 这是我的代码……
import os,argparse
import pytesseract
from pytesseract import Output
import csv
import numpy as np
from PIL import Image
image = cv2.imread('dota.jpg')
height = 9000
width = 16000
dimensions = (width, height)
image = cv2.resize(image,dimensions, interpolation=cv2.INTER_LINEAR)
def get_grayscale(image):
return cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
def adaptiveThreshold(image):
return cv2.adaptiveThreshold(image,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2)
gray = get_grayscale(image)
sharpenKernel = np.array(([[2, -1, 2], [-1, 9, -1], [2, -1, 2]]), np.float32)/9
sharpen = cv2.filter2D(src=gray, kernel=sharpenKernel, ddepth=-1)
adthresh = adaptiveThreshold(sharpen)
cong = '--psm 6'
final = pytesseract.image_to_data(adthresh,output_type=Output.DICT,config=cong,lang='eng')
print(final['text'])
1条答案
按热度按时间afdcj2ne1#
当对Tesseract OCR作业进行故障排除时,可以方便地在每个页面分割模式中运行一个循环,因为这些模式针对不同类型的输入进行了优化。这意味着Tesseract可以仅因为使用了正确/错误的PSM而产生显著的上级/低劣的结果。
例如,像这样的函数可以让您尝试不同的PSM,并测试一些基本图像预处理的效果。
然后运行每个psm并检查输出:
我通常在扫描文本(文档)上使用Tesseract,但我发现它在查找图像中的文本(例如,从照片中阅读路标的文本,或从屏幕截图中提取文本)方面没有那么好。
我发现PaddleOCR在最具挑战性的OCR任务中通常要好得多,而且用途: