回答
不,你不能用pngj做到这一点。在PNG图像中可见的文本不在内部存储为文本。如果您想识别文本,您将需要OCR软件。
但是,如果能够以另一种更容易被计算机解析的格式获得数据,那么它将会更好多。
您的意思是其他格式?请详细说明。 – Rajasankar 2010-12-20 10:26:37
@Rajasankar:像CSV文件或XML文件这样的东西比解析PNG文件要容易得多。 – 2010-12-20 10:44:19
是的,它似乎是可能的。但是,您应该找到一个好的OCR库。然后,假设您的OCR库返回了正确的结果,那么您需要以某种方式验证您的传说是否放置在适当的位置。
你可以试试Asprise OCR了。这是一个很好的Java可用的OCR API。
这里我使用scala来给出我的解决方案。如果您是java开发人员,将scala代码转换为java代码非常容易。
第一步:在build.sbt多加一个行
libraryDependencies += "com.asprise.ocr" % "java-ocr-api" % "[15,)"
第二步:进口库
import com.asprise.ocr.Ocr
第二步:斯卡拉code.Please注:这里是一个文件类型。如果您只有fileName/filePath,则需要使用新文件()进行转换。
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
}
我也写博客透露更多的细节信息关于how to extract text/content from another file(pdf, html, image, etc)
如果您想了解更多关于此Java-OCR-API,你可以阅读its official website here。
- 1. 使用Java获取存储在PNG图像中的文本
- 2. 如何在Java中获取文本文件的随机行?
- 3. 如何在使用Java下载文件时获取文件名?
- 4. Selenium Grid如何使用Java从文件中获取文件?
- 5. 如何使用Bash获取一个文件夹中的.png文件数组
- 6. 如何使用Java从文本文件中读取某些行?
- 7. 如何在java中使用读取文件时获得行号
- 8. 如何使用Python从文本文件中获取整数?
- 9. 如何在使用JSP和Java时使用HTML获取本地文件
- 10. 如何在java中获取文件和文件夹信息?
- 11. 如何从文本框中的文本中获取文件名
- 12. 如何从使用Java的XML节点组中获取文本?
- 13. 在java中使用Apache Tika从PDF文件中提取文本
- 14. 在java中读取文本文件
- 15. 如何使用Java从文本文件读取奇数行?
- 16. 如何使用Java从互联网上读取文本文件?
- 17. 如何使用dynDateTime从文本框中获取文本
- 18. Java如何创建.png文件?
- 19. 如何使用java在文本文件中添加标题行
- 20. 如何阅读大文本文件,并在Java中使用它
- 21. 在Java中使用JSON数据读取文本文件
- 22. 如何从java JUnit中的.properties文件中获取文件名?
- 23. 如何获得使用java的文本文件的两行之间的文本
- 24. 在Eclipse中,如何在Java字符串中获取SQL文本?
- 25. 如何使用python创建.png文件?
- 26. 如何使用VB获取文本文件的DateTime标记6
- 27. 如何使用Qt获取文件内部文本的值?
- 28. 如何使用AJAX请求干净地获取文本文件
- 29. 如何使用tika 1.6获取文本内容文件?
- 30. 如何在Java中有序地读取文本文件?
您要找的是OCR软件。 'pngj'库没有提到它可以做OCR。 – 2010-12-20 09:08:56
PNGJ不能那样做。你需要一个文本识别库。 – khachik 2010-12-20 09:09:15
这绝对不是微不足道的。一般过程称为OCR(光学字符识别),它读取文本。然而,它并不完美,可能会选取不是文本的东西,如果图表中有更多文本(坐标轴上的标签等),它们也会被读取。 – falstro 2010-12-20 09:10:29