Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java获取png文件中的文本_Java_Testing_Png - Fatal编程技术网

如何使用Java获取png文件中的文本

如何使用Java获取png文件中的文本,java,testing,png,Java,Testing,Png,我想检查图像中是否存在特定的字符串。可能吗?你能做到吗 我的文件将包含一个图表和一些图例。我想检查一下图例是否正确 不,你不能用pngj做那件事。PNG图像中可见的文本不会作为文本在内部存储。如果您希望识别文本,则需要软件 但是,如果你能以另一种更容易被计算机解析的格式获取数据,那就更好了。是的,这似乎是可能的。但是,您应该找到一个好的OCR库。然后,假设您的OCR库返回正确的结果,您需要以某种方式验证图例是否放置在正确的位置。您可以尝试。这是一个很好的Java OCR API。这里我使用sca

我想检查图像中是否存在特定的字符串。可能吗?你能做到吗


我的文件将包含一个图表和一些图例。我想检查一下图例是否正确

不,你不能用pngj做那件事。PNG图像中可见的文本不会作为文本在内部存储。如果您希望识别文本,则需要软件


但是,如果你能以另一种更容易被计算机解析的格式获取数据,那就更好了。

是的,这似乎是可能的。但是,您应该找到一个好的OCR库。然后,假设您的OCR库返回正确的结果,您需要以某种方式验证图例是否放置在正确的位置。

您可以尝试。这是一个很好的Java OCR API。

这里我使用scala给出了我的解决方案。如果您是java开发人员,那么将scala代码转换为java代码非常容易

步骤1:在build.sbt中再添加一行

libraryDependencies += "com.asprise.ocr" % "java-ocr-api" % "[15,)"
步骤2:导入库

import com.asprise.ocr.Ocr
步骤2:scala代码。请注意:这是一个文件类型。如果您只有fileName/filePath,则需要使用new File()对其进行转换

try {
      // Image
      Ocr.setUp()
      val ocr = new Ocr
      ocr.startEngine("eng", Ocr.SPEED_FASTEST)
      val files = List(<your_file>)
      val outputString = ocr.recognize(files.toArray, Ocr.RECOGNIZE_TYPE_ALL, Ocr.OUTPUT_FORMAT_PLAINTEXT)
      ocr.stopEngine()
      Some(outputString)
} catch {
      case e: Exception => None // todo: to support multiple file types
}
试试看{
//形象
Ocr.setUp()
val ocr=新ocr
ocr.startEngine(“英语”,ocr.SPEED\u最快)
val files=List()
val outputString=ocr.recognize(files.toArray、ocr.recognize\u TYPE\u ALL、ocr.OUTPUT\u FORMAT\u明文)
ocr.stopEngine()
一些(输出字符串)
}抓住{
案例e:Exception=>None//todo:支持多种文件类型
}
我还写了一个博客来提供更多的信息


如果您想了解更多关于这个JavaOCRAPI的信息,可以阅读

你要找的是OCR软件。
pngj
库没有提到它可以进行OCR。pngj无法做到这一点。你需要一个文本识别库。这绝对不是小事。一般的过程称为OCR(光学字符识别),它读取文本。但是,它还远远不够完美,可能会拾取非文本的内容,如果图形中还有文本(轴上的标签等),它们也会被读取。您正在寻找OCR(光学字符识别:)。你应该看看这里谢谢Pratik和dvhh。tesseract可能有用。@Rajasankar:像CSV文件或XML文件这样的文件比PNG文件更容易解析。