标签: ocr

如何知道PDF是否仅包含图像还是已经过OCR扫描以进行搜索?

我有一堆来自扫描文档的PDF文件.这些文件包含图像和文本的混合.有些被扫描为没有OCR的图像,因此每个PDF页面都是一个大图像,即使整个页面完全是文本.其他人使用OCR进行扫描,并包含图像和可搜索的文本,其中包含文本.在许多情况下,甚至图像中的文字也可以搜索到.

我想使用OCR,使用Acrobat 8​​ Pro进行自动处理以识别所有扫描文档中的文本,但我不想重新OCR过去已经通过OCR过程的文件.有没有人知道是否有办法告诉哪些只包含图像,哪些已包含可搜索的文本?

我打算在C#或VB.NET中这样做,但我不认为能够分辨两种文件是依赖于语言的.

pdf ocr search acrobat

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

我在哪里可以找到一个免费的.Net(C#)库,我可以用来扫描和OCR文件?

我搜索一个免费的.Net(C#)库,我可以使用它来扫描文档扫描仪,然后OCR文档,这样我就可以从中获取文本以保存在数据库中.

经过一些搜索,我找不到任何在Visual Studio 2010和.Net 4中工作的人,有人知道任何类似这样的库吗?

.net c# ocr open-source document

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

如何在ASP.Net MVC4 Web API项目中使用Microsoft OCR库(Microsoft.Windows.Ocr)?

TL; DR:

有没有人知道在服务器端ASP.Net Web应用程序(如MV4 Web API)上引用Microsoft.Windows.Ocr(/ WindowsPreview.Media.Ocr.dll)程序集的方法,并利用该程序集中的OCR功能将照片图像作为输入并从中提取文本内容.它? 如果是,请在答案中提供详细说明.

问题详情(到目前为止我尝试过的)

我正在构建一个Web应用程序,它将上传到服务器的图像(通过文件上传UI屏幕),然后使用OCR读取文本,并在下一页上显示文本,就在上传的图像旁边.

由于大多数商业OCR库成本一只胳膊和长度(超过$ 1,300个我最后一次检查),我想我可以尝试使用微软OCR库 Microsoft.Windows.Ocr免费的,似乎是非常简单和容易使用.

所以我尝试将Microsoft.Windows.Ocr Nuget Package 安装到我的ASP.Net MVC4 Web API项目,并且成功了.

安装Microsoft.Windows.Ocr Nuget Package

之后,我浏览了我的MVC4 Web API项目参考资料,令我惊讶的是,没有找到对Microsoft.Windows.Ocr.dll程序集的引用.

缺少对Microsoft.Windows.Ocr.dll的引用

那么我尝试通过浏览到该\packages文件夹中的该程序集添加对Microsoft.Windows.Ocr.dll程序集的x86版本的引用,并从文件夹中选择WindowsPreview.Media.Ocr.dll\lib\win81\x86

注意:程序集名称是WindowsPreview.Media.Ocr.dll而不是Microsoft.Windows.Ocr.dll,不知道为什么!

浏览并选择Microsoft.Windows.Ocr.dll OCR程序集

当我这样做并单击确定时,我收到以下错误消息.

---------------------------
Microsoft Visual Studio
---------------------------
A reference to   
'D:\TestProjects\packages\Microsoft.Windows.Ocr.1.0.0\lib\win81\x86\
 WindowsPreview.Media.Ocr.dll' could not be added. Please make sure 
 that the file is accessible, and that it is a valid assembly …
Run Code Online (Sandbox Code Playgroud)

c# asp.net ocr asp.net-mvc microsoft-ocr

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

使用OpenCV预处理Tesseract OCR的图像

我正在尝试开发一个应用程序,它使用Tesseract识别手机摄像头拍摄的文档中的文本.我正在使用OpenCV预处理图像以便更好地识别,应用高斯模糊和阈值方法进行二值化,但结果非常糟糕.

是我用于测试的图像: 在此输入图像描述

这里的预处理图像: 在此输入图像描述

我可以使用其他过滤器来使Tesseract的图像更具可读性吗?

ocr opencv tesseract image-processing

23
推荐指数
3
解决办法
6万
查看次数

使用pytesseract识别图像中的文本

我需要使用pytesseract从这张图片中提取文字: 在此输入图像描述

和代码:

from PIL import Image, ImageEnhance, ImageFilter
import pytesseract
path = 'pic.gif'
img = Image.open(path)
img = img.convert('RGBA')
pix = img.load()
for y in range(img.size[1]):
    for x in range(img.size[0]):
        if pix[x, y][0] < 102 or pix[x, y][1] < 102 or pix[x, y][2] < 102:
            pix[x, y] = (0, 0, 0, 255)
        else:
            pix[x, y] = (255, 255, 255, 255)
img.save('temp.jpg')
text = pytesseract.image_to_string(Image.open('temp.jpg'))
# os.remove('temp.jpg')
print(text)
Run Code Online (Sandbox Code Playgroud)

而"temp.jpg"就是 在此输入图像描述

还不错,但打印的结果,2 WW 不是正确的文字2HHH,那么如何删除那些黑点呢?

python ocr image pytesser

23
推荐指数
3
解决办法
7万
查看次数

提高多段扫描的OCR性能

我正在开展一个涉及提取以PDF格式存储的文本科学论文的项目.对于大多数论文而言,使用PDFMiner很容易实现,但一些较旧的论文将其文本存储为大图像.本质上,扫描纸张并且该图像文件(通常是PNG或JPEG)包括整个页面.

我尝试通过它的python-tesseract绑定使用Tesseract引擎,但结果非常令人失望.

在深入研究我对这个库的问题之前,我想提一下我对OCR库的建议持开放态度.似乎很少有本机python解决方案.

是一个这样的图像(JPEG),我试图提取文本.我在上面链接的python-tesseract google代码页上的示例代码段中提供了确切的代码.我应该提一下,文档有点稀疏,所以我的代码中很多选项中的一个很可能配置错误.任何建议(或深入教程的链接)将不胜感激.

是我尝试OCR的输出.

我的问题如下:

  1. 我正在使用的代码中有什么不是最理想的吗?有没有更好的方法呢?也许是另一个图书馆?
  2. 我可以执行哪种预处理来改善检测?这些图像都是B&W,但是我应该设置一个阈值并将其上方的任何内容设置为单值黑色,并将其下方的所有内容设置为空值白色?还要别的吗?
  3. 一个更具体的问题:通过对单个单词执行OCR可以提高性能吗?如果是这样,任何人都可以建议一种在图像文件中划分单个单词的方法(例如:上面链接的单词)并将它们提取到可以独立处理的单独图像中吗?
  4. 嵌入在PDF页面图像中的图形和其他图像是否会干扰OCR?我应该删除这些吗?如果是这样,有人可以建议一种自动删除它们的方法吗?

编辑: 为简单起见,这是我使用的代码.

import tesseract
api = tesseract.TessBaseAPI()
api.Init(".","eng",tesseract.OEM_DEFAULT)
api.SetPageSegMode(tesseract.PSM_AUTO)

mImgFile = "eurotext.jpg"
mBuffer=open(mImgFile,"rb").read()
result = tesseract.ProcessPagesBuffer(mBuffer,len(mBuffer),api)
print "result(ProcessPagesBuffer)=",result
Run Code Online (Sandbox Code Playgroud)

这里是替代代码(其结果未在此问题中显示,尽管性能似乎非常相似).

import cv2.cv as cv
import tesseract

api = tesseract.TessBaseAPI()
api.Init(".","eng",tesseract.OEM_DEFAULT)
api.SetPageSegMode(tesseract.PSM_AUTO)

image=cv.LoadImage("eurotext.jpg", cv.CV_LOAD_IMAGE_GRAYSCALE)
tesseract.SetCvImage(image,api)
text=api.GetUTF8Text()
conf=api.MeanTextConf()
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释这两个片段之间的差异吗?

python ocr tesseract

22
推荐指数
2
解决办法
4712
查看次数

检测国民身份证并获取详细信息

我正在尝试检测以下类型的国民身份证并获取其详细信息.例如,签名的位置应该在人物图像的右上角找到,在本例中为"BC".

在此输入图像描述

我需要在iPhone上做这个应用程序.我想过使用Opencv,但我怎样才能获得标记的细节?我是否需要使用类似卡片或OCR训练应用程序?

移动应用程序是否有任何特定的实现?

我还通过card-io检测信用卡详细信息,Card-io是否还检测到其他卡的详细信息?

更新:

我用tesseract进行文本检测.如果图像单独有文本,Tesseract工作正常.所以我裁剪了红色标记的区域并作为Tesseract的输入,它与MRZ部分一起工作.

有一个针对Tesseract 的IOS实现,我已经测试过了.

我需要做什么?

现在我正在尝试自动化文本检测部分.现在我打算自动化以下项目,

1)裁剪脸部(我已经使用了Viola-jones面部探测器).

2)需要从照片中获取此示例中的"BC".

3)从ID卡中提取/检测MRZ区域.

我正在努力做2和3,任何想法或代码片段都会很棒.

ocr opencv image-processing computer-vision card.io

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

使用Tesseract进行手写识别

我只是想知道如果在一个表单中使用大写字母全部放在他们自己的小盒子中,那么tesseract对于手写识别有多准确.

我知道你可以训练它来识别你自己的笔迹,但我的问题是我需要在多个笔迹中使用它.谁能指出我正确的方向?

非常感谢.

ocr android tesseract handwriting

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

为OCR设置Tesseract字体

我想使用tesseract进行序列号识别,我只想识别单个字符,没有单词,没有字典.因此,我想使用已经训练过的tesseract字体类型之一来获得更好的识别结果.

这些是训练有素的Tesseract字体类型:

Andale_Mono.ttf
Arial_Black.ttf
Arial_Bold.ttf
Arial.ttf
Comic_Sans_MS_Bold.ttf
Comic_Sans_MS.ttf
Courier_New_Bold.ttf
Courier_New.ttf
Georgia_Bold.ttf
Georgia.ttf
Gottf
Impact.ttf
Times_New_Roman_Bold.ttf
Times_New_Roman.ttf
Trebuchet_MS_Bold.ttf
Trebuchet_MS.ttf
Verdana_Bold.ttf
Verdana.ttf
Run Code Online (Sandbox Code Playgroud)

由于训练的字体类型也具有不同的字体设计样式,因此在区分例如"Z"和"2"字符方面存在问题.Times New Roman的设计更加圆润,而Arial只有更多的直线.

字体式设计的差异

我的经验是,由于其他字体设计的相似性改变,tesseract在区分"Z"和"2"方面存在问题.

因此,如果只使用一种字体类型(例如Arial)用于使用tesseract进行字符识别,我认为我可以获得更好的识别结果.

题:

是否有可能在tesseract中指定字体类型?

类似但较旧的主题(2012年10月)链接

ocr fonts tesseract

21
推荐指数
1
解决办法
2686
查看次数

OpenCV MSER检测文本区域 - Python

我有发票图片,我想检测上面的文字.所以我计划使用两个步骤:首先是识别文本区域,然后使用OCR识别文本.

我在python中使用OpenCV 3.0.我能够识别文本(包括一些非文本区域),但我还想从图像中识别文本框(也不包括非文本区域).

我的输入图片是: 原版的 输出是: 处理 我正在使用以下代码:

img = cv2.imread('/home/mis/Text_Recognition/bill.jpg')
mser = cv2.MSER_create()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #Converting to GrayScale
gray_img = img.copy()

regions = mser.detectRegions(gray, None)
hulls = [cv2.convexHull(p.reshape(-1, 1, 2)) for p in regions]
cv2.polylines(gray_img, hulls, 1, (0, 0, 255), 2)
cv2.imwrite('/home/mis/Text_Recognition/amit.jpg', gray_img) #Saving
Run Code Online (Sandbox Code Playgroud)

现在,我想识别文本框,并删除/取消识别发票上的任何非文本区域.我是OpenCV的新手,也是Python的初学者.我能够在MATAB示例C++示例中找到一些示例,但如果我将它们转换为python,则需要花费大量时间.

有没有使用OpenCV的python的例子,或者任何人都可以帮助我吗?

python ocr opencv image-processing

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