您会建议从屏幕截图中识别所有字符?屏幕截图非常清晰(白色背景上只有黑色文字),我也可以为文本选择任何starndard字体(安装在Windows上).我尝试了一些OCR方式(Tesseract等),但它在识别某些字符方面犯了错误(这让我感到困惑,因为文本没有丝毫噪音,字体是最常见的字体 - Courier New,Fixedsys等),我需要它100%准确.是否有一些库可用于此特定目的,某些模式识别或其他什么?或者我应该使用一些等宽字体获取屏幕截图,并迭代通过图像移动到右+ font_size像素,然后比较捕获的东西与字母的内存表示和相同大小的相同字体的数量?解决这个问题的最佳方法是什么?非常感谢你提前.
更新:我终于通过使用monospaced字体(Courier New)训练Tesseract,以我所截取的精确尺寸设法获得100%的准确率.希望将来帮助某人:)
当我在OpenCv中打开图像(可能为300 dpi,72 dpi等)时,图像的dpi自动更改为96 dpi。我想改变这个dpi。请帮忙。提前致谢...
#include "stdafx.h"
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
IplImage *img1=cvLoadImage("input.jpg");
cvSaveImage("output.jpg",img1);
return(0);
}
Run Code Online (Sandbox Code Playgroud) 我正在做一个项目来识别名片中的文本并将它们映射到适当的字段。我使用 opencv 进行图像处理。我需要将预处理过的图像提供给 Tesseract-OCR 引擎进行文本识别。此链接 指出图像的 DPI 至少应为 300。我的图像像素大小为 2560x1536,DPI 为 72。
import cv2
def clear(img):
back = cv2.imread("back.png", cv2.IMREAD_GRAYSCALE)
img = cv2.bitwise_xor(img, back)
ret, img = cv2.threshold(img, 120, 255, cv2.THRESH_BINARY_INV)
return img
def threshold(img):
ret, img = cv2.threshold(img, 120, 255, cv2.THRESH_BINARY_INV)
img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
ret, img = cv2.threshold(img, 248, 255, cv2.THRESH_BINARY)
return img
def fomatImage(img):
img = threshold(img)
img = clear(img)
return img
img = fomatImage(cv2.imread("1566135246468.png",cv2.IMREAD_COLOR))
cv2.imwrite("aa.png",img)
Run Code Online (Sandbox Code Playgroud)
这是我的代码。但是当我尝试用 tesseract-ocr 识别它时,我收到了警告。
Warning: Invalid resolution 0 dpi. Using 70 instead.
我应该如何设置dpi?