我目前正在开发一个Windows 8.1应用程序,我正在使用Web语言,主要是jQuery(Cordova类型项目),因为它可能在其他平台上使用.我需要使用Microsoft OCR库(不是Tesseract或任何其他的,我知道它们,但我现在真的需要使用这个),以便分析图像并在我的应用程序中使用提取的文本.
我从MSDN下载了JavaScript示例应用程序并启动了它:它完全正常工作(当然在VS 2013中安装OCR插件之后).
我现在正在尝试将OCR引擎集成到我的应用程序中(我也在我的项目中安装了OCR插件),但它根本不起作用.事实上,当我尝试在我的机器上启动我的应用程序时,执行失败并返回以下错误消息:
ms-appx://io.cordova.blankcordovaapp2/www/scripts/myscript.js第11行第5行无法管理的异常
0x800a1391 - JavaScript执行错误:"WindowsPreview"未定义"
这是代码的"错误"部分(它位于我的脚本的最开头):
$(document).ready(function () {
"use strict";
// Keep objects in-scope across the lifetime of the scenario.
var FileToken = "";
// Define namespace and API aliases.
var FutureAccess = Windows.Storage.AccessCache.StorageApplicationPermissions.futureAccessList;
// Should be initialising the OCR engine
var OCR = WindowsPreview.Media.Ocr;
var ocrEngine = new OCR.OcrEngine(OCR.OcrLanguage.french);
document.addEventListener("deviceready", onDeviceReady, false);
Run Code Online (Sandbox Code Playgroud)
我尝试以与在Microsoft OCR样本中完成相同的方式初始化OCR引擎.VS似乎没有找到WindowsPreview.Media.Ocr应该是,根据官方文档:
用于Windows运行时的Microsoft OCR库包含WindowsPreview.Media.Ocr命名空间.该库作为NuGet包分发 - 它不包含在Windows软件开发工具包(SDK)中.
我确实使用NuGet命令行在项目中安装了插件,因此我不知道为什么它没有被识别并且无法初始化.
在此先感谢您的帮助,如果我不够清楚,请不要犹豫,询问更多细节.
javascript ocr cordova visual-studio-2013 visual-studio-cordova
我正在开发一个项目,我必须开发OCR算法(我必须从Image中读取文本,然后将其转换为不同的语言).所以我的第一个任务是从图像中获取文本.
完成第一项任务的步骤.
结果


检测分辨率和反转等图像特征.这样我们最终可以将其转换为拉直图像以进行进一步处理.(完成了Image的旋转代码但是无法检测到我们必须旋转Image的Image角度,所以仍然在角度检测部分工作)
线路检测和删除.此步骤需要改进页面布局分析,以获得更好的下划线文本识别质量,检测表格等.(决定完成该部分的结束)
页面布局分析.在此步骤中,我尝试识别图像中存在的文本区域.因此,只有那部分用于识别,并且省略了该区域的其余部分.
检测文本行和单词.在这里,我们还需要处理不同的字体大小和单词之间的小空格.
识别人物.这是OCR的主要算法; 必须将每个字符的图像转换为适当的字符代码.有时,该算法会为不确定图像生成多个字符代码.例如,识别"I"字符的图像可以产生"I","|" 稍后将选择"1","l"代码和最终字符代码.
将结果保存为选定的输出格式,例如,可搜索的PDF,DOC,RTF,TXT.保存原始页面布局非常重要:列,字体,颜色,图片,背景等.
所以我在part6中需要帮助.我已经完成了行检测部分(从包含n行的段落中获取n个图像)但是在下一部分中卡住了单词和字符识别.如果您知道与OCR和字符识别部分相关的良好链接,那么请发布这里.
对于字符识别我想使用asprise(Java库)http://asprise.com/product/ocr/index.php?lang=java
我想通过线条(以及将来的文字)自动划分古代手写文字的图像.
我只是使用简单的数字化(基于像素的亮度).之后我将数据存储到二维数组中.
我的第一个算法很简单 - 如果数组的一行中的黑色像素多于最大值和最小值的均方根,则该行是行的一部分.
在形成线条列表后,我切断了高度低于平均值的线条.最后它变成了某种线性回归,试图最小化空行和文本行之间的差异.(我以为这个事实)

我的第二次尝试 - 我尝试使用GA和几个健身功能.染色体包含3个值 - xo,x1,x2.xo [-1; 0] x1 [0; 0.5] x2 [0; 0.5]
确定行到行的同一性的函数是(xo +α1x1+α2x2)> 0,其中α1是行中黑色像素的缩放和,α2是行中极端黑色像素之间的范围的中值.(a1,a2 [0,1])我试过的另一个函数是(x1 <α1或x2>α2)和(1/xo + [a1 x1]/[a2 x2])> 0
最后一个函数是最多的高效.
适应度函数是
(1 /(HeigthRange + SpacesRange))
范围是最大值和最小值之间的差异.它代表了文本的同质性.此功能的全局最佳 - 将图像划分为线条的最平滑方式.
我使用C#和我的自编码GA(经典,2点交叉,灰色代码染色体,最大群体为40,突变率为0.05)
现在我没有想法如何将这个图像分成几行,精度达到100%.
这样做的有效算法是什么?
更新: 原始图像 原始BMP(1.3 MB)
更新2:
将此文本的结果改进为100%

我是怎么做到的:
问题:

GA令人惊讶地未能认识到这一点.我看了'find rages'函数的调试数据,发现在'无法识别'的地方有太多的噪音.功能代码如下:
public double[] Ranges()
{ …Run Code Online (Sandbox Code Playgroud) 我正在使用SurfaceView捕获图像并在public void onPreviewFrame4(byte []数据,相机相机)中获取Yuv Raw预览数据
我必须在onPreviewFrame上执行一些图像预处理,所以我需要将Yuv预览数据转换为RGB数据,而不是图像预处理并返回到Yuv数据.
我使用了两个函数来编码和解码Yuv数据到RGB,如下所示:
public void onPreviewFrame(byte[] data, Camera camera) {
Point cameraResolution = configManager.getCameraResolution();
if (data != null) {
Log.i("DEBUG", "data Not Null");
// Preprocessing
Log.i("DEBUG", "Try For Image Processing");
Camera.Parameters mParameters = camera.getParameters();
Size mSize = mParameters.getPreviewSize();
int mWidth = mSize.width;
int mHeight = mSize.height;
int[] mIntArray = new int[mWidth * mHeight];
// Decode Yuv data to integer array
decodeYUV420SP(mIntArray, data, mWidth, mHeight);
// Converting int mIntArray to Bitmap and
// than image …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个应用程序来查找图像中的数字并添加它们.
如何识别图像中的书写号码?
我需要在图像中有许多方框来获取左侧的数字并将它们相加以得出总数.我怎样才能做到这一点?
编辑:我在图像上做了一个java tesseract ocr,但我没有得到任何正确的结果.我怎么训练呢?
也
我做了边缘检测我得到了这个:

我已经尝试过使用iPhone的Tesseract,并且在没有图像预处理的情况下评估其准确度为70%.我也注意到提取数字可能很差.我听说过OCRopus OCR引擎:哪个更好,Tesseract或OCRopus,就数字提取而言,如果我的图像预处理很低?
是否有人使用两种引擎运行测试,使用通常的指标比较结果?
我正在尝试在java中构建一个示例应用程序,它将读取图像文件并输出从图像中提取的文本.我发现Tesseract项目看起来很有希望,但它在c ++中.为了使用它,我应该从我的Java应用程序中将其作为命令行运行Runtime.exec(...)吗?或者有更好的解决方案,也许是JAR?此外,这只是一个示例应用程序,从可伸缩性的角度来看,它是否会作为命令行应用程序运行?
我已经使用了Tesseract,结果还有很多不足之处.我目前正在检测非常小的图像(35x15,没有边框,但尝试添加一个带有imagemagick而没有ocr优势); 它们的范围从2个字符到5个,并且是一个非常可靠的字体,但是字符可变,只需使用图像大小校验和,或者这样就不起作用了.
除了坚持使用Tesseract或对其进行完整的定制培训外,OCR还有哪些选择? 此外,如果这与Heroku样式托管兼容将是非常有用的(至少我可以编译垃圾箱并将其推过).
我一直在寻找一段时间以及所有我见过的OCR库请求.我想知道如何实现最纯净,易于安装和使用OCR库以及安装到C#项目的详细信息.
如果可行,我只想像通常的dll参考一样实现它...
例:
using org.pdfbox.pdmodel;
using org.pdfbox.util;
Run Code Online (Sandbox Code Playgroud)
还有一个小的OCR代码示例会很好,例如:
public string OCRFromBitmap(Bitmap Bmp)
{
Bmp.Save(temppath, System.Drawing.Imaging.ImageFormat.Tiff);
string OcrResult = Analyze(temppath);
File.Delete(temppath);
return OcrResult;
}
Run Code Online (Sandbox Code Playgroud)
所以请考虑我对OCR项目并不熟悉,并给我一个答案,比如和假人交谈.
编辑: 我猜人们误解了我的要求.我想知道如何将这些开源OCR库实现到C#项目以及如何使用它们.作为dup给出的链接没有给出我要求的答案.