标签: ocr

Tesseract混淆了两个数字

我正在编写一个应用程序来扫描图像中的数字.

这些数字是使用OCR-B字体,并且还可以含有+>字符.

这是我的源图片:

源图像

即使将字符集限制为上述字符,使用Tesseract的扫描也不是很好.由于我没有找到任何针对Tesseract的OCRB培训文件,我决定自己进行培训.

我创建了这个训练图像并从中制作了一个盒子文件.盒子文件是正确的,所有字母都正确匹配.

然后我完成了这里描述的所有步骤来创建其他必要的文件.

使用这个新训练的OCR-B tessdata-set,我在源图像上得到了相当不错的结果,有一个小错误:所有1s都被误认为8s,反之亦然.用于处理图像的命令是

$ tesseract esr2c.tif ocrb-esr2c -l ocrb
Run Code Online (Sandbox Code Playgroud)

并且源图像的输出是

0800000001456> 8 00000195731208 8 01050008 023+ 08 0301226> 20

如果你交换所有1s和8s并将它与源图像进行比较,输出将是正确的(除了我可以忽略的最后两个字母).

怎么会发生这种情况?我在培训过程中是否犯了一些错误?我该如何解决?

ocr tesseract

18
推荐指数
1
解决办法
1万
查看次数

如何在Android中使用Tesseract?

我在网上搜了几个小时.我得到了许多答案,说我们需要使用NDK等来为WINDOWS的"Tesseract".

但是我没有逐步/正确地解释安装NDK时应该做什么.如何获取.so文件?我已经完成安装NDK和Cygwin.为了检查它是否正确完成,我输入make -v并给出了预期的输出.

任何使用过"Tesseract"的人都可以告诉我他们是如何做到的吗?(我已下载"Mezzofanti",但在那里我没有找到任何"Tesseract"文件.)

ocr android tesseract android-ndk

18
推荐指数
2
解决办法
3万
查看次数

用于Android应用程序的手写识别API

有没有好的手写识别API来帮助在Android平台上开发应用程序?Google已发布(2012年7月左右http://www.google.com/insidesearch/features/search/handwritinginput/index.html)一项功能,使用手写功能在触摸屏设备中进行搜索,看起来很棒,是否有可能获得访问这些API以便在Android应用中使用?

ocr android handwriting-recognition

18
推荐指数
2
解决办法
3万
查看次数

仅选择图像的特定部分

我是"光学字符识别"的新手,需要更多的信息和建议,因为我无法找到可以做我需要的东西.

我有以下任务:

  1. 图像作为输入给出 - 它们将具有相同的结构 - 一些图标和公司符号和文本.
  2. 只需要选择文本,然后使用某个OCR库将其作为文本.

是否可以使用一些OCR php库创建一个函数,并只选择一些带有文本的区域?

如果PHP没有好的OCR库,你能推荐一些其他语言吗?

下面的例子展示了我想要做的事情(这只是一个例子,我不是试图通过金钱进行法律操作):

这是示例图片:

在此输入图像描述

这是输出(用红色矩形包围的文本):

  1. 这是所有债务,公共和私人的法律投标
  2. L11180916G
  3. ONEDOLAR

欢迎所有文章和建议.

php ocr

18
推荐指数
1
解决办法
8848
查看次数

PDF的批量OCR程序

以前曾经问过,但我真的不知道这些答案对我有帮助.这是我的问题:我得到了一堆(10,000左右)pdf文件.有些是使用adobe的打印功能保存的文本文件(所以他们的文本是完美的,我不想冒险搞砸它们).有些是扫描图像(所以他们没有任何文字,我将不得不接受OCR).文件在同一目录中,我无法分辨哪个是哪个.最终我想将它们转换为.txt文件,然后对它们进行字符串处理.所以我希望最准确的OCR成为可能.

似乎有人建议:

  1. adobe pdf(我没有这样的许可副本......加上如果ABBYY finereader或更好的东西,如果我不使用它,为什么要付费)
  2. ocropus(我无法弄清楚如何使用这个东西),
  3. Tesseract(看起来好像它在1995年很棒,但我不确定是否有更准确的东西加上它本身不做pdf而且我必须转换为TIFF.这引起了我自己的问题,因为我没有一个acrobat的许可副本,所以我不知道如何将10,000个文件转换为tiff.另外我不希望将10,000个30页文档转换为30,000个单独的tiff图像).
  4. wowocr
  5. pdftextstream(来自2009年)
  6. ABBYY FineReader(显然它的'$$$,但如果这个东西明显更好,我会花600美元来完成这个,即有更准确的ocr).

我也是编程的n00b所以如果要花几周的时间来学习如何做,我宁愿支付$$$.感谢输入/体验.

顺便说一下,我正在运行Linux Mint 11 64位和/或Windows 7 64位.

以下是其他主题:

批量OCRing尚未进行OCR的PDF

开源OCR

使用OCR的PDF文本提取方法

https://superuser.com/questions/107678/batch-ocr-for-many-pdf-files-not-already-ocred

pdf ocr batch-processing

17
推荐指数
2
解决办法
2万
查看次数

笔画宽度变换(SWT)实现(Python)

任何人都可以描述我如何使用opencv或simplecv在python中实现SWT?

python ocr opencv computer-vision simplecv

17
推荐指数
3
解决办法
2万
查看次数

如何在tesseract中保留文档结构

我正在使用tesseract ocr从图像中提取文本.保留文档的结构对我来说非常重要.目前tesseract不保留结构,实际上它改变了文本的顺序.我的输入是下图.

输入

我得到的输出如下:

Someto the left
Someto the left

Some in the middle
Some in the middle

Some with some tab
Some with some tab

Some with some space between them
Some with some space between them

Sometext here
Sometext here

this much
this much
Run Code Online (Sandbox Code Playgroud)

如何获得图像中相同结构的所需输出?

即如下:

                                                 Some text here
                                                 Some text here

Some to the left
Some to the left

                    Some in the middle
                    Some in the middle

        Some with some tab
        Some with some tab

Some with some …
Run Code Online (Sandbox Code Playgroud)

ocr tesseract

17
推荐指数
2
解决办法
1万
查看次数

预处理扫描不良的手写数字

我有几千个包含数字化纸张形式的黑白图像(1位)的PDF文件.我正在尝试OCR一些字段,但有时写作太微弱了:

在此输入图像描述

我刚刚学习了形态变换.他们真的很酷!!! 我觉得我在滥用它们(就像我在学习Perl时用正则表达式做的那样).

我只对日期感兴趣,07-06-2017:

im = cv2.blur(im, (5, 5))
plt.imshow(im, 'gray')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

ret, thresh = cv2.threshold(im, 250, 255, 0)
plt.imshow(~thresh, 'gray')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

填写此表单的人似乎对网格有些不屑,所以我试图摆脱它.我可以用这个变换来隔离水平线:

horizontal = cv2.morphologyEx(
    ~thresh, 
    cv2.MORPH_OPEN, 
    cv2.getStructuringElement(cv2.MORPH_RECT, (100, 1)),
)
plt.imshow(horizontal, 'gray')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我也可以得到垂直线:

plt.imshow(horizontal ^ ~thresh, 'gray')

ret, thresh2 = cv2.threshold(roi, 127, 255, 0)
vertical = cv2.morphologyEx(
    ~thresh2, 
    cv2.MORPH_OPEN, 
    cv2.getStructuringElement(cv2.MORPH_RECT, (2, 15)), 
    iterations=2
)
vertical = cv2.morphologyEx(
    ~vertical, 
    cv2.MORPH_ERODE, 
    cv2.getStructuringElement(cv2.MORPH_RECT, (9, 9))
)
horizontal = cv2.morphologyEx(
    ~horizontal, 
    cv2.MORPH_ERODE, 
    cv2.getStructuringElement(cv2.MORPH_RECT, (7, 7))
)
plt.imshow(vertical & horizontal, 'gray')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

现在我可以摆脱网格:

plt.imshow(horizontal & vertical …
Run Code Online (Sandbox Code Playgroud)

python ocr opencv

17
推荐指数
1
解决办法
1040
查看次数

通过Tesseract OCR在七段显示器上进行文本检测

我正在运行的问题是从图像中提取文本,为此我使用了Tesseract v3.02.我必须提取文本的样本图像与仪表读数有关.其中一些具有实心纸张背景,其中一些具有LED显示器.我已经训练了固体纸张背景的数据集,结果是有效的.

我现在遇到的主要问题是具有LED/LCD背景的文本图像,Tesseract无法识别,因此不会生成训练集.

任何人都可以指导我如何使用Tesseract与七段显示器(LCD/LED背景)正确的方向或是否有任何其他替代我可以使用而不是Tesseract.

LED背景图片1 LED背景图片2 米1与实心板料背景 在此输入图像描述 在此输入图像描述

ocr tesseract seven-segment-display

16
推荐指数
2
解决办法
2万
查看次数

OpenCV自适应阈值OCR

我正在使用OpenCV从iPhone相机准备OCR图像,我一直无法获得准确的OCR扫描所需的结果.这是我现在使用的代码.

    cv::cvtColor(cvImage, cvImage, CV_BGR2GRAY);
    cv::medianBlur(cvImage, cvImage, 0);
    cv::adaptiveThreshold(cvImage, cvImage, 255, CV_ADAPTIVE_THRESH_MEAN_C, CV_THRESH_BINARY, 5, 4);
Run Code Online (Sandbox Code Playgroud)

这种方法需要花费太长时间,并没有给我带来好的结果. 在此输入图像描述 在此输入图像描述

关于如何使这更有效的任何建议?这些图像来自iPhone相机.

在使用安德里的建议之后.

在此输入图像描述

    cv::Mat cvImage = [self cvMatFromUIImage:image];
    cv::Mat res;
    cv::cvtColor(cvImage, cvImage, CV_RGB2GRAY);
    cvImage.convertTo(cvImage,CV_32FC1,1.0/255.0);
    CalcBlockMeanVariance(cvImage,res);
    res=1.0-res;
    res=cvImage+res;
    cv::threshold(res,res, 0.85, 1, cv::THRESH_BINARY);
    cv::resize(res, res, cv::Size(res.cols/2,res.rows/2));
    image = [self UIImageFromCVMat:cvImage];
Run Code Online (Sandbox Code Playgroud)

方法:

void CalcBlockMeanVariance(cv::Mat Img,cv::Mat Res,float blockSide=21) // blockSide - the parameter (set greater for larger font on image)
{
    cv::Mat I;
    Img.convertTo(I,CV_32FC1);
    Res=cv::Mat::zeros(Img.rows/blockSide,Img.cols/blockSide,CV_32FC1);
    cv::Mat inpaintmask;
    cv::Mat patch;
    cv::Mat smallImg;
    cv::Scalar m,s;

    for(int i=0;i<Img.rows-blockSide;i+=blockSide)
    {
        for (int j=0;j<Img.cols-blockSide;j+=blockSide)
        { …
Run Code Online (Sandbox Code Playgroud)

iphone ocr opencv ios

16
推荐指数
2
解决办法
1万
查看次数