我正在使用手指画画线,到目前为止,我已经提出以下代码:
case MotionEvent.ACTION_MOVE:
//return if touch is in this area of canvas
if (x<=430 || y<=80 || y>=490) return true;
//draw path using x and y co-ordinates
mPath.quadTo(previousPoint.x, previousPoint.y, (x+previousPoint.x)/2,(y+previousPoint.y)/2);
canvas.drawPath(mPath, paint);
previousPoint.x = x;
previousPoint.y = y;
//invalidate canvas on move
imageView.invalidate();
break;
case MotionEvent.ACTION_UP:
Xend=x;
Yend=y;
//validate that is it true?
if((Xstart>=780 && Xstart<=830) && (Xend>=780 && Xend<=830) && (Ystart>=10 && Ystart<=200) && Yend<=800 && Yend>=300){
//show toast if correct
Toast.makeText(getBaseContext(), "Correct", Toast.LENGTH_SHORT).show();
}else{
//show toast with XY …Run Code Online (Sandbox Code Playgroud) 我已经按照教程实现了适用于 Android 的 Google Mobile Vision。我正在尝试构建一个应用程序来扫描收据并查找总数。然而,当我扫描以不同格式打印的不同收据时,API 将以似乎任意的方式检测 TextBlock。例如,在一张收据中,如果多个文本单词由单个空格分隔,则它们将被分组到单个 TextBlock 中。但是,如果两个文本单词被大量空格分隔,那么它们将被分隔为独立的 TextBlock,即使它们出现在同一“行”上。我想做的是强制 API 将收据的每一整行识别为单个实体。这可能吗?
我在下面(裁剪后)有此源图像,并且在阅读文本之前尝试进行一些图像处理。

使用python和opencv,我尝试使用k = 2的k-means删除背景中的行,结果是

我尝试使用下面的代码对图像进行平滑处理
def process_image_for_ocr(file_path):
# TODO : Implement using opencv
temp_filename = set_image_dpi(file_path)
im_new = remove_noise_and_smooth(temp_filename)
return im_new
def set_image_dpi(file_path):
im = Image.open(file_path)
length_x, width_y = im.size
factor = max(1, int(IMAGE_SIZE / length_x))
size = factor * length_x, factor * width_y
# size = (1800, 1800)
im_resized = im.resize(size, Image.ANTIALIAS)
temp_file = tempfile.NamedTemporaryFile(delete=False, suffix='.jpg')
temp_filename = temp_file.name
im_resized.save(temp_filename, dpi=(300, 300))
return temp_filename
def image_smoothening(img):
ret1, th1 = cv2.threshold(img, BINARY_THREHOLD, 255, cv2.THRESH_BINARY)
ret2, th2 = cv2.threshold(th1, 0, 255, …Run Code Online (Sandbox Code Playgroud) 我在货架上启动了一个新的文件编号文本识别应用程序,并在 Youtube 上使用了以下 ML Kit 文本识别: 教程 ML KIT 文本识别
只要文件编号水平写入,它就可以完美运行。当文本垂直方向并且我将手机置于横向位置时,应用程序会考虑方向并且文本识别不再起作用。
我试图添加两者
<activity android:name=".NameOfTheActivity" android:screenOrientation="portrait">
Run Code Online (Sandbox Code Playgroud)
在清单中,
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)甚至
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR)
进入 onCreate 方法。即使手机处于横向位置,活动也保持纵向模式。但是,在横向位置使用我的手机时,文本识别仍然不起作用。
Activity 代码的对应部分如下:
//Event Camera View
cameraView.addCameraKitListener(new CameraKitEventListener() {
@Override
public void onEvent(CameraKitEvent cameraKitEvent) {
}
@Override
public void onError(CameraKitError cameraKitError) {
}
@Override
public void onImage(CameraKitImage cameraKitImage) {
//Show Dialog
waitingDialog.show();
//Processing image
Bitmap bitmap = cameraKitImage.getBitmap();
bitmap = Bitmap.createScaledBitmap(bitmap, cameraView.getWidth(), cameraView.getHeight(), false);
cameraView.stop();
recognizeText(bitmap);
}
@Override
public void onVideo(CameraKitVideo cameraKitVideo) {
}
});
private void recognizeText(Bitmap bitmap) …Run Code Online (Sandbox Code Playgroud) 我像AndroidExample一样设置了 ML-Kit并使用设备上识别模式。它工作得很好。但是如果我们有一个像 'A'、'5'、'K'、'9' 这样的字符,它就无法识别任何东西!它只适用于一个以上的字符串长度!我只需要识别一个字符。我缺什么?!
这是我的函数,它获取图像的位图并从中找到文本。
private void RecognizeText(Bitmap bitmap) {
FirebaseVisionImage image = FirebaseVisionImage.fromBitmap(bitmap);
FirebaseVisionTextRecognizer detector = FirebaseVision.getInstance()
.getOnDeviceTextRecognizer();
Task<FirebaseVisionText> result =
detector.processImage(image)
.addOnSuccessListener(new OnSuccessListener<FirebaseVisionText>() {
@Override
public void onSuccess(FirebaseVisionText firebaseVisionText) {
String s = firebaseVisionText.getText() + " | " + firebaseVisionText.getText().length();
Toast.makeText(MainActivity.this, s, Toast.LENGTH_LONG).show();
textView.setText(s);
}
})
.addOnFailureListener(
new OnFailureListener() {
@Override
public void onFailure(Exception e) {
Log.d("EEEEEEEEVVVVVV", e.toString());
}
});
}
Run Code Online (Sandbox Code Playgroud) 我已经阅读了有关 ml kit 教程的所有内容https://firebase.google.com/docs/ml-kit/android/recognize-text。我只对本地 ocr 感兴趣,而不是云版本。当然,正如问题所暗示的那样,它与文本识别有关。
我想开发一个将某种图像转换为文本格式的iPhone应用程序.我想知道是否有用于实现此目的的内置库?
我需要输入图像和坐标。输入坐标中存在的文本必须作为输出读取。如何使用节点超立方体来做到这一点?
我试图在使用 Vision 框架找到的文本区域上绘制矩形,但它们总是有点偏离。我这样做是这样的:
public func drawOccurrencesOnImage(_ occurrences: [CGRect], _ image: UIImage) -> UIImage? {
UIGraphicsBeginImageContextWithOptions(image.size, false, 0.0)
image.draw(at: CGPoint.zero)
let currentContext = UIGraphicsGetCurrentContext()
currentContext?.addRects(occurrences)
currentContext?.setStrokeColor(UIColor.red.cgColor)
currentContext?.setLineWidth(2.0)
currentContext?.strokePath()
guard let drawnImage = UIGraphicsGetImageFromCurrentImageContext() else { return UIImage() }
UIGraphicsEndImageContext()
return drawnImage
}
Run Code Online (Sandbox Code Playgroud)
这就是我创建盒子的方式,与苹果的方式完全相同:
let boundingRects: [CGRect] = observations.compactMap { observation in
guard let candidate = observation.topCandidates(1).first else { return .zero }
let stringRange = candidate.string.startIndex..<candidate.string.endIndex
let boxObservation = try? candidate.boundingBox(for: stringRange)
let boundingBox = boxObservation?.boundingBox ?? .zero
return VNImageRectForNormalizedRect(boundingBox,
Int(UIViewController.chosenImage?.width …Run Code Online (Sandbox Code Playgroud) 我正在编写一个文本识别程序,并且在编写轮廓时遇到了问题。该程序可以很好地处理一行文本,但是当涉及到整个文本块时,我的程序不会像80%的时间那样检测到文本行。提取一行文本然后提取所有其他行(一次一个)的真正有效方法是什么?
我要达到的目标:
text-recognition ×10
android ×4
ocr ×4
firebase ×2
opencv ×2
c++ ×1
canvas ×1
google-mlkit ×1
ios ×1
iphone ×1
node.js ×1
objective-c ×1
python ×1
swift ×1
tesseract ×1
touch-event ×1
uiview ×1
vision ×1