我正在考虑为Android创建一个OCR。我还没有开始,虽然我在google &中搜索了很多没有找到任何合理的答案来解决这个问题。最近我开始了解Android OpenCV项目。现在我正在寻找一些关于入门的提示。你能否建议正确的方法?在Android上使用OpenCV的OCR
回答
1)如何进行OCR for Android?
我在互联网上找到了两种方法。
a)使用Tesseract - Tesseract由google维护,托管在git上。下载和构建的说明可以在互联网上找到(搜索谷歌与“rmtheis tesseract”,按照第一个链接)。以下是易于参考的快速步骤。
git clone git://github.com/rmtheis/tess-two tess
cd tess
cd tess-two
ndk-build
我没有使用内置ANT,但在Eclipse中创建了自己的APK项目,并导入示例代码来测试库。
我在系统上安装了ubuntu。我没有遇到上述指示有任何问题。我发现安装git客户端更容易,然后按照上述步骤操作。一旦构建了tesseract库,您将需要在android应用程序中加载这个库,然后在您的应用程序中使用这些API。网上有很多样品,我发现它很容易使用。
b)使用openCV - 您可以使用open cv和creat OCR功能。 OpenCV指令很少冗长。但是,如果这些指令得到正确遵守,您可以构建Open CV库并在Android应用程序中使用静态库。
您将需要CMAKE来构建openCV库。 CMAKE有3个其他依赖项。但是,如果完全遵循指令,则构建openCV并不困难。
http://code.opencv.org/projects/opencv/wiki/Building_OpenCV4Android_from_trunk
我发现很容易的Tesseract OCR基于OpenCV的同时,有利于识别手写使用的字体。
2)从哪里开始?
openCV和tesseract都有样本目录。这些样品是自起动器套件。 有关openCV手写OCR的更多示例,请在谷歌上使用关键词“使用openCV进行OCR”进行搜索。谷歌搜索的前两场比赛是很好的参考点。
希望以上解释有帮助。
编辑:
如果您有甲骨文的JDK 7的系统上安装,因为是我的情况下,你可能会遇到的问题。为了解决这些问题,我必须编辑/usr/share/cmake-2.8/Modules/FindJNI.cmake文件。在这个文件中,我注释了引用openjdk的行以及默认和添加了oracle jdk 7的引用,如下所示。
JAVA_APPEND_LIBRARY_DIRECTORIES(JAVA_AWT_LIBRARY_DIRECTORIES
${_JAVA_HOME}/jre/lib/{libarch}
${_JAVA_HOME}/jre/lib
${_JAVA_HOME}/lib
${_JAVA_HOME}
/usr/lib
/usr/local/lib
/usr/lib/jvm/java/lib
/usr/lib/java/jre/lib/{libarch}
/usr/lib/jvm/jre/lib/{libarch}
/usr/local/lib/java/jre/lib/{libarch}
/usr/local/share/java/jre/lib/{libarch}
/usr/lib/j2sdk1.4-sun/jre/lib/{libarch}
/usr/lib/j2sdk1.5-sun/jre/lib/{libarch}
/opt/sun-jdk-1.5.0.04/jre/lib/{libarch}
/usr/lib/jvm/java-6-sun/jre/lib/{libarch}
/usr/lib/jvm/java-1.5.0-sun/jre/lib/{libarch}
/usr/lib/jvm/java-6-sun-1.6.0.00/jre/lib/{libarch} # can this one be removed according to #8821 ? Alex
#/usr/lib/jvm/java-6-openjdk/jre/lib/{libarch} # Commented by Atul
#/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/{libarch} # fedora
# Debian specific paths for default JVM
#/usr/lib/jvm/default-java/jre/lib/{libarch} # Commented by Atul
#/usr/lib/jvm/default-java/jre/lib # Commented by Atul
#/usr/lib/jvm/default-java/lib # Commented by Atul
# OpenBSD specific paths for default JVM
/usr/local/jdk-1.7.0/jre/lib/{libarch}
/usr/local/jre-1.7.0/lib/{libarch}
/usr/local/jdk-1.6.0/jre/lib/{libarch}
/usr/local/jre-1.6.0/lib/{libarch}
/usr/lib/jvm/java-7-oracle/jre/lib/{libarch} # This is added Atul
)
并在脚本查找包含库的部分...
set(JAVA_AWT_INCLUDE_DIRECTORIES
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/include"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/include"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\${java_install_version};JavaHome]/include"
${_JAVA_HOME}/include
/usr/include
/usr/local/include
/usr/lib/java/include
/usr/local/lib/java/include
/usr/lib/jvm/java/include
/usr/lib/jvm/java-6-sun/include
/usr/lib/jvm/java-1.5.0-sun/include
/usr/lib/jvm/java-6-sun-1.6.0.00/include # can this one be removed according to #8821 ? Alex
#/usr/lib/jvm/java-6-openjdk/include
/usr/local/share/java/include
/usr/lib/j2sdk1.4-sun/include
/usr/lib/j2sdk1.5-sun/include
/opt/sun-jdk-1.5.0.04/include
# Debian specific path for default JVM
#/usr/lib/jvm/default-java/include
# OpenBSD specific path for default JVM
/usr/local/jdk-1.7.0/include
/usr/local/jdk-1.6.0/include
/usr/lib/jvm/java-7-oracle/include
)
然后我跟着精确的说明建立OpenCV的为Android ...
- 1. Opencv与Android- OCR
- 2. Android上的OpenCV使用Eclipse
- 3. 使用谷歌Docs OCR在Android上的其他东西
- 4. Qt可以不使用OCR正方体与OpenCV的3.2 Ubuntu的
- 5. 在android中使用opencv
- 6. 的iOS +正方体OCR + OpenCV的
- 7. 在Android上使用OpenCV上的摄像头LED闪光灯
- 8. Android中用于OCR的FOCUS_MODE
- 9. OCR与OpenCV 3交互的示例
- 10. OpenCV中带有ANN的OCR示例
- 11. 在iOS上使用OpenCV FileStorage
- 12. Android-vision OCR; Android-vision
- 13. Android的 - 位图OCR
- 14. 使用Unity3d的OCR
- 15. 如何使用Opencv进行OCR文档识别?
- 16. OCR for android
- 17. OMR/OCR on android
- 18. Android OCR库
- 19. OpenCV:为OCR分离车牌字符
- 20. 我应该在Android上使用JavaCV还是OpenCV的java库?
- 21. 使用OCR识别上角字符
- 22. 在Maemo 5上使用QT的OpenCV(N900)
- 23. 在Windows上使用Qt Creator的OpenCV 2.1
- 24. 我应该在Android中使用什么样的OCR Java库?
- 25. 开始使用android openCV
- 26. 使用OpenCV,如何在执行OCR之前检测文本方向?
- 27. 在Android中使用opencv绘制轮廓
- 28. 在android中使用OpenCV录制视频
- 29. 在openCV中使用CLAHE for Android
- 30. 如何在Android NDK中使用OpenCV BOWImgDescriptorExtractor?