환경 : Win7, Android studio, minSdkVersion 16, xompileSdkVersion 22

 

 

 

필자는 Android studio 에서 빌드 하는 내용을 설명한다.

소스에 대한 설명은 없고 단순히 샘플 프로젝트를 빌드해서 핸드폰으로 실행해서 테스트해보는 것 까지이다.

 

 

읽기전에...

이 글을 읽는 사람은 기초적인 Android 개발 지식이 있다고 생각하고 상세한 설명은 생략한다.

PC에 android studio 및 andorid 개발 셋팅이 완료되어 있으며 스마트폰으로 RUN 할 준비를 하고 따라해야 이상없이 동작한다.

 

 


 

오류나 궁금증은 일단 이 정리된 포스팅 참고

Android OCR 한글 및 영문 인식 Tesseract 오류 정리, 질문, QNA

 


 



 

광학 문자 인식(Optical character recognition; OCR)은 사람이 쓰거나 기계로 인쇄한 문자의 영상을 이미지 스캐너로 획득하여 기계가 읽을 수 있는 문자로 변환하는 뭐 그런거라고 한다.

지금부터 안드로이드 앱으로 만들어 테스트 해 볼 수 있도록 설명한다.

 

 

요약

 

1. Sample Project 다운로드 및 프로젝스 생성

2. traineddata 파일 다운로드 및 셋팅

3. tess-two 모듈 다운로드 및 Import하고 jar 설정

4. 설정 파일 ( build.gradle ) 수정

5. 실행

 

 

 

 

1. Sample Project 다운로드 및 Import

주소 : https://github.com/GautamGupta/Simple-Android-OCR

위 주소에서 Simple-Android-OCR-master 프로젝트 파일을 다운받는다.

Import 하면 좋은데 분명히 SimpleAndroidOCRActivity.java 파일의 TessBaseAPI  제외한 부분에서 에러가 엄청 날 것이다. 또는 Import 자체가 안될 수 있다.

 

필자는 프로젝트를 하나 생성했다. 그리고 나서 다운받은 Sample Project 의 JAVA, XML, Manifest 의 퍼미션 등을 모두 가져와서 붙혀넣기 했다. 새로운 프로젝트에 기존 샘플을 입힌다고 생각하자.

Java 파일에서 TessBaseAPI 에 관련한 에러가 나는 것은 정상이다. 무시하고 지나간다. 3번에서 해결된다.

 

 

 

 

2. traineddata 파일 다운로드 및 셋팅

traineddata 파일은 일종의 분석 언어 팩? 정도라고 가볍게 생각하고 넘어간다. 어차피 해야 할 것은 다운받고 붙혀넣기가 전부다.

주소 : https://github.com/tesseract-ocr/tessdata

위 주소에서 eng.traineddata, kor.traineddata 파일을 다운받는다. 다운 받고 assets/tessdata 폴더에 붙혀넣기 한다.

assets 폴더가 없을 수 있다. app/src/main 경로 아래에 그냥 assets 폴더를 생성하면 된다.

 

 

 

 

3. tess-two 모듈 다운로드 및 Import하고 jar 설정

주소 : https://github.com/rmtheis/tess-two

위 주소에서 tess-two 모듈을 받는다. 전체 다 받아도 되고 tess-two 폴더만 받아도 된다. 필요한건 tess-two 폴더와 내부 파일이다.

 

다운 받은 후 아래처럼 모듈을 Import 한다. 그림 빠져먹지말고 모두 따라한다.

 

 

4. 설정 파일 ( tess-two 의 build.gradle ) 수정

주의사항 : compileSdkVersion 이나 buildToolsVersion, dependencies 내용에 있는 버전 등은 최대한 app의 build.gradle 파일과 맞추도록 한다. 아니면 에러 폭풍에 걷잡을 수 없다.

 

필자는 아래 부분은 완벽히 동일하게 작성했다. (생성한 프로젝트의 build.gradle 중 일부)

1
2
3
4
5
6
7
8
9
10
11
 compileSdkVersion 22
    buildToolsVersion "23.0.2"
 
    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
 
compile 'com.android.support:appcompat-v7:22.2.1'
cs

 

위 설명에 주의하며 아래 소스를 그대로 tess-two 의 build.gradle 파일에 아래 내용을 붙혀넣기 한다. 다시한번 말하지만 위 부분은 필히 생성한 프로젝트와 동일시 한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import org.apache.tools.ant.taskdefs.condition.Os
 
apply plugin: 'com.android.library'
 
android {
    compileSdkVersion 22
    buildToolsVersion "23.0.2"
 
    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
 
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
 
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            res.srcDirs = ['res']
            jni.srcDirs = []
            jniLibs.srcDirs = ['libs']
        }
    }
 
    // Call external ndk-build(.cmd) script to build the native code
    task ndkBuild(type: Exec) {
        def ndkBuildExt = Os.isFamily(Os.FAMILY_WINDOWS) ? ".cmd" : ""
        commandLine "ndk-build${ndkBuildExt}", '-C', file('.').absolutePath,
                '-j', Runtime.runtime.availableProcessors()
    }
 
    tasks.withType(JavaCompile) {
        compileTask -> compileTask.dependsOn ndkBuild
    }
 
    // Cleanup task to remove previously generated binaries
    task ndkClean(type: Exec) {
        def ndkBuildExt = Os.isFamily(Os.FAMILY_WINDOWS) ? ".cmd" : ""
        commandLine "ndk-build${ndkBuildExt}", '-C', file('.').absolutePath, 'clean'
    }
 
    tasks.withType(Delete) {
        cleanTask -> cleanTask.dependsOn ndkClean
    } 
}
 
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.1'
}
 
 
// Settings for uploading module AAR to Bintray for library distribution
 
task sourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}
 
task javadoc(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    options {
        links "http://docs.oracle.com/javase/7/docs/api/"
        linksOffline "http://d.android.com/reference","${android.sdkDirectory}/docs/reference"
    }
}
 
task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}
 
 
 
cs

 

 



 

 

5. 실행

앱을 실행(run)하면 끝이다.

기본으로 영어를 인식하도록 설정되어 있다.

한글을 인식하고 싶으면 SimpleAndroidOCRActivity.java 에서 lang 변수를 kor 로 바꾸기만 하면 된다. 조금만 소스를 분석해보면 왜인지 알 수 있을 것이다.

 

 

자세한 설명은 없고 단순히 앱을 실행할 수 있도록만 설명했다.

방금 직접 다 만들어 본 내용을 작성해서 안될 수 가 없다.

시간이 지나 버전이 바뀌면 안될 수 도 있다는 점 참고하도록.

 

 

 

by 개발자 CofS 2016.04.06 13:42
  • 이전 댓글 더보기
  • 2016.07.28 17:28 ADDR EDIT/DEL REPLY

    비밀댓글입니다

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2016.07.28 17:42 신고 EDIT/DEL

      별도로 한국에서 배우는 한자로 한정지은 한문 인식이 가능하지는 않은거같아요
      다만 중국어나 일본어는 인식이 가능하다는 내용은 있네요
      다른 방법으로는 본문에 있는 데이터파일을 직접 만들수 있다고 알고있어요
      한문에 대한 데이터파일을 만들고 트레이닝을 통해서 한자인식을 가능하도록 하는 방법이 있을듯 합니다

  • 초보입니다 2016.08.05 14:25 ADDR EDIT/DEL REPLY

    안드로이드 초보입니다. 블로그덕에 많이 배웠어요. 정말 잘되네요 감사합니다 그런데, 사진을 찍는방식말고 이미지파일을 가져와서 인식하고싶으면 어느부분을 건드려야될까요 ㅠㅠ 알려주세요

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2016.08.05 16:15 신고 EDIT/DEL

      안녕하세요 ^^
      제가 지금 소스를 테스트할 여력은 안되고 잠깐 소스를 보니 SimpleAndroidOCRActivity 에서 startCameraActivity 함수를 보면 카메라를 호출하고 있어요 ㅎㅎ
      이부분을 사진첩과 연동하거나 이미지파일을 연결시켜주면 될거같네요 ㅎㅎ

    • 초보입니다 2016.08.05 16:41 EDIT/DEL

      와 감사합니다~! 많이배워가요~!

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2016.08.05 17:31 신고 EDIT/DEL

      고생하세요 ^^

  • traineddata 2016.08.17 10:54 ADDR EDIT/DEL REPLY

    정말 잘됩니다 감사합니다 덕분에 많이 배웠습니다. 헌데, 어플용량이 매우 크더군요 traineddata 에서 혹시 필요없는 문자를 지워서 용량을 지우는방법도있나요? 아무리 알아봐도 저는 못찾겠네요...

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2016.08.17 11:07 신고 EDIT/DEL

      안녕하세요 ㅎㅎ
      traineddata 파일을 직접 다뤄본적이 없어서 정확히 말씀드리기는 힘들것 같습니다 ㅠㅠ

      하지만 traineddata 파일을 직접 만드는 방법도 많이 나와있으니 그 부분을 찾아보시면 힌트정도는 얻어가실 수 있을거라 생각합니다.
      어느부분이 용량을 많이 차지하는지 또는 직접 만들어서 용량을 다운시키는 방법 등 여러 방도가 있을것 같아요 ^^

  • ndk 2016.08.18 02:21 ADDR EDIT/DEL REPLY

    ndk문제로 여쭤보는데요.... 지금에러가 nation 부분에서 상당한데 ndk 문제인거같은데
    cannot resolve corresponding JNI function.....
    이라고 뜨는데 뭐가문제일까요 ㅜㅜㅜㅜㅜㅜ ndk 설정도 다해보았는데 환경변수 설정이잘못된건지 실행은되는데 카메라인식후 저장한다음에 어플이 중지되네요 ㅜㅜ

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2016.08.18 09:08 신고 EDIT/DEL

      api 23 (android 6.0) 에서 카메라 접근 권한이 조금 바뀐거 같아요

      아마 그 부분이 반영이 안된 라이브러리라 그럴 수 있는데 targetSdkVersion 을 22 이하로 하시고 테스트 디바이스도 api 22 이하 기기로 테스트 해보심이 어떨가 싶어요 ㅎㅎ

    • kujung 2016.12.06 21:10 EDIT/DEL

      ndk님과 같은 오류가 떳는데 안드로이드 6.0으로 카메라 접근권한을 시키려면 어떤 코드를 바꿔야되는지 여쭤봐도될까요?

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2016.12.06 22:00 신고 EDIT/DEL

      oncreate 문에
      ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, 0);
      다음 코드 한번 넣어 보심이...

    • kujung 2016.12.07 09:39 EDIT/DEL

      코드를 넣어도 같은 에러가 발생하네요...
      tess-two->java->com.googlecode->tesseract.android->TessBaseAPI.java 파일에 밑부분private static native void nativeClassInit();
      부터시작하여 맨밑에줄까지 모두 이름에 빨간줄이 뜨네요..
      빨간줄에 마우스를 대서 번역해보니 해당JNI함수를 해결할 수 없다고,해당 JNI함수가 프로젝트에서 발견되지 않는 Java의 원시 메소드 선언을 보고합니다.
      라고 나와요 !!

      추가로확인해보니 tess-two폴더안에있는 모든코드에 private static native 가 붙은 메소드는 빨간줄이 떠있습니다!

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2016.12.07 10:10 신고 EDIT/DEL

      tess-two 라이브러리는 android API level 9 ~ 22 까지 허용합니다.
      그 말인 즉 API level 23 부터는 책임지지 않겠다는 뜻이 되겠네요.
      프로젝트와 디바이스의 버전을 맞춘 후 테스트 하기를 권장합니다.

      하지만 API level 23이상의 카메라의 권한은 project 에서 수정가능할 것으로 보이며
      http://webnautes.tistory.com/822
      여기를 참고하시면 해결가능해 보입니다.

    • kujung 2016.12.07 11:14 EDIT/DEL

      빠른 답변정말감사합니다 !!
      한글텍스트를 인식,출력하고 그걸 검색까지 연동해보려고하는데, 한글텍스트(프린터물)을 정확히 인식하려면 어느정도의 훈련이 필요한지 알 수 있을까요..?

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2016.12.07 11:33 신고 EDIT/DEL

      댓글중에 여러번 언급한 적이 있는데 트레이닝에 대해서는 직접 해본것은 아니고 다른분들이 작성한 글들을 참고한 수준이라 정확히 말씀드리기는 어렵네요 ㅠ

  • ndk 2016.08.18 15:17 ADDR EDIT/DEL REPLY

    아 감사합니다 그부분은 해결이되었습니다!!! 그런데 txt파일로 출력하는부분으로 다른것을 만들고싶은데
    txt 파일경로 어떤함수를 건드려야되나해서 잘모르겟어서 여쭤볼게요 ㅜㅜ

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2016.08.18 15:25 신고 EDIT/DEL

      txt파일로 출력하는 기능은 없는데 ㅠ 어떤걸 말씀하시는건지 모르겠네요ㅠ

  • Favicon of https://88oy.tistory.com BlogIcon 팔팔청춘 2016.09.02 14:21 신고 ADDR EDIT/DEL REPLY

    좋은정보 감사합니다.

    저도 Plugin with id 'com.github.dcendents.android-maven' not found
    이게 발생해서 root경로의 build.gradle 파일을 수정하였습니다.
    아래 2둘 추가했네요.
    classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'
    classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'

    밑에는 build.gradle 파일 전체 소스입니다.





    // Top-level build file where you can add configuration options common to all sub-projects/modules.

    buildscript {
    repositories {
    jcenter()
    }
    dependencies {
    classpath 'com.android.tools.build:gradle:2.1.3'
    classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'
    classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
    }
    }

    allprojects {
    repositories {
    jcenter()
    }
    }

    task clean(type: Delete) {
    delete rootProject.buildDir
    }

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2016.09.02 17:53 신고 EDIT/DEL

      피드백 너무 감사합니다 ㅎㅎ
      앞으로 같은 오류에 대해서는 완벽히 해결되겠네요 ㅎㅎ

  • 우리아이가 달라졌어요 2016.09.10 21:31 ADDR EDIT/DEL REPLY

    구글 tesseract ocr 이용하여 어플을 실행시켰을때 사진을 찍은 부분을 문자로 잘 저장하는데
    사진 찍은 문자열을 split 이용하여 쪼갤려고 하는데 오류가 나네요...
    예를 들어서 How are you 라고 적힌 부분을 찍으면 How are you 라고 잘 저장합니다.
    하지만 저는 H/o/w/a/r/e/y/o/u 로 하나씩 쪼개고 싶은데...split 함수를 쓰면 오류가 나네요
    split 하여 배열에 저장하고 싶은데 오류가 생기고... 무슨 방법이 없을까요..?

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2016.09.12 09:18 신고 EDIT/DEL

      소스와 로그를 봐야 어떤 에러가 발생했는지 알수있을거같아요 ㅎㅎ

  • ndk 2016.09.11 15:16 ADDR EDIT/DEL REPLY

    안녕하세요 이프로그램을 활용하여 다른 프로그램을 만들고있는 학생인데요
    혹시 ocr 인식률을 더 높일수있는방법이 없을까요 ㅠㅠㅠ?

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2016.09.12 09:19 신고 EDIT/DEL

      인식률을 높이기 위해서는 트레이닝(학습)이 필요합니다. 이는 폰트, 글자크기, 간격 등 여러 사항을 고려할 수 있습니다. Tesseract의 장점이라고 할 수 도 있겠습니다.
      그게 아니라면 ABBYY OCR을 이용하시는 것도 좋습니다. 체험 무료버전이 기간제로 존재하고 인식률은 매우 높기로 알려져있습니다 ^^

    • ndk 2016.09.14 12:26 EDIT/DEL

      jtessboxeditor 인식률을 높이는건지 ㅜㅜ? 트레이닝을 어떻게 시키는지 잘모르겠는데 혹시방법을 알려주실수있나요..?

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2016.09.19 09:16 신고 EDIT/DEL


      제가 따로 트레이닝에 관한 내용은 정리한게 없습니다.
      다만 구글링해보면 아래와 같은 글들을 볼 수 있는데 그 쪽을 참고하면 좋을 듯 싶습니다 ^^

      https://www.google.co.kr/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=Tesseract+%ED%8A%B8%EB%A0%88%EC%9D%B4%EB%8B%9D

  • 안드입문생 2016.09.11 16:20 ADDR EDIT/DEL REPLY

    안녕하세요 안드로이드 입문하는 한 학생입니다^^ 제가 인터넷을 찾다보니 ocr이라는 프로그램은 영문은 인식륜이 굉장히 높은데 한글자체는 인식률이 좋지 못하다고 하더라구요..ㅠㅠ 위에 말씀하신대로 eng을 kor로 바꾸면 인식은 되긴하지만 굉장히 편차가 심합니다. 혹시 가능하시다면 가지고 계신 kor.traineddata를 제 이메일로 보내주실 수 있을까요??ㅠㅠ

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2016.09.12 09:21 신고 EDIT/DEL

      프로토타입으로만 만들어둔거라 따로 인식률을 높이지는 않았습니다 ㅠㅠ

  • 안드입문생 2016.09.13 13:10 ADDR EDIT/DEL REPLY

    안녕하세요 저번에 질문 하나드렸었는데요, 하나만 더 드릴게요.
    kor.traineddata가 잘 먹히지 않더라구요.. 혹시 kor.traineddata의 상위버젼의 무언가가 있는지, 아니면 kor.traineddata와는 다른 무언가가 있는지 여쭤봅니다.

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2016.09.13 14:00 신고 EDIT/DEL

      질문의 요지를 이해하기 힘드네요 ㅠ

      잘 먹히지 않는다는게 인식이 안되는 건지 파일을 못찾는건지 뭐가 잘 먹히지 않는다는건지...

      무언가를 찾는게 어떤걸 말씀하시는건지 ㅠ
      대체 파일인지 뭔지 질문이 너무 포괄적이고 이해하기 어려워 답변드리기가 쉽지않네요 ㅠ

      직관적으로 물어보신다면 제가 알고있는 한도내에서 혹은 저도 한번 같이찾아보고 답변드릴게요 ㅎㅎ

  • 안드입문생 2016.09.15 01:02 ADDR EDIT/DEL REPLY

    아.. 너무 질문이 모호했죠.. 죄송합니다 ㅠㅠ
    잘 먹히지 않는다는 것은 인식률이 되게 낮다는 걸 말하는 거였는데 너무 이상하게 질문했네요. 죄송합니다. ocr프로그램 자체가 영문 인식률은 높잖아요. 그런데 제가 가지고 있는 kor.traineddata를 사용하면 인식률이 되게 낮아서요.. 원래 kor.traineddata를 사용하면 인식률이 낮나요? 혹시 kor.traineddata와는 다른 확장자 파일이 있나요?

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2016.09.19 09:17 신고 EDIT/DEL

      인식률이 낮은게 사실입니다.

      하지만 가장 큰 장점중에 하나인 트레이닝이 가능합니다. 문자 학습을 통한 인식률을 향상시킬 수 있습니다.

      제가 따로 트레이닝에 관한 내용은 정리한게 없습니다.
      다만 구글링해보면 아래와 같은 글들을 볼 수 있는데 그 쪽을 참고하면 좋을 듯 싶습니다 ^^

      https://www.google.co.kr/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=Tesseract+%ED%8A%B8%EB%A0%88%EC%9D%B4%EB%8B%9D

  • 서정은 2016.11.07 09:54 ADDR EDIT/DEL REPLY

    안녕하세요~NDK설치도 완료하고 1,2과정까지 다 진행하고, tess-two모듈을 import module하는 과정까지 진행했는데 왜 저는 project structure부분에서 Modules에 tess-two가 뜨지 않을까요?
    Dependencies에서 module dependency에 들어가면 tess-two가 있는데 project structure부분에서 Modules에 tess-two가 뜨지 않는 이유가 궁금합니다.

    • 서정은 2016.11.07 09:59 EDIT/DEL

      아 추가 질문이 있습니다!
      그래서 Dependencies에서 module dependency에 들어가 Choose Modules를 통해 tess-two를 설정하였는데
      오류가 사라지지 않습니다.....ㅠㅠ

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2016.11.07 10:37 신고 EDIT/DEL

      제가 방금 test project 하나 생성해서 import 과정만 진행해 보았는데요
      정상적으로 import 후 project structure 를 실행해보니 Modules 에 tess-two 가 뜨는것을 확인했습니다.
      정은님은 왜 안나오는걸까요 ...ㅠㅠ
      처음 importm 할 때 대기시간이 길어지면서 안드로이드스튜디오가 멈춘거같아서 import 하는 중간에 안드로이드 스튜디오를 강제종료하고 다시 켰어요
      그랬더니 Modules 에 나오지않더라구요 그래서 다시 import 하고 가만히 계속 기다렸더니 import 가 완료됬고 정상적으로 Modules 에 등록되어 있었습니다.

      추가질문중 오류는 어떤 오류를 말씀하시는건지 ...?ㅎㅎ

  • 안드광 2016.11.19 16:43 ADDR EDIT/DEL REPLY

    ㅇError:No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi
    이에러가 계속뜹니다 !!
    ndk는 따로설정하고 환경변수설정도해야하는건가요?

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2016.11.21 09:18 신고 EDIT/DEL

      기본적으로 Android 개발을 시작할 세팅은 필요합니다

      ndk를 따로 설정한다는 것이 어떤의미인지는 모르겠지만 개발환경을 구축한 후에 진행하셔야 합니다

  • 테몬이 2016.12.12 02:33 ADDR EDIT/DEL REPLY

    좋은 정보 잘 보고 갑니다 ㅎㅎ
    저는 java파일이나 xml 매니페스트를 직접 복붙하니까 자꾸 sync하는 과정에서 오류가 나서
    메인 자바파일이랑 메인 액티비티파일, 매니페스트 파일을 직접 손으로 쳤는데
    일단 실행하면 버튼이나 텍스트도 잘 나오고 버튼 누르면 카메라 촬영 화면까지 잘 넘어가네요.

    근데 이후로 촬영하면 그냥 카메라입니다... ㅋㅋㅋ;;
    뭘 빼먹어서 이런걸까요..;

    메인액티비티 자바랑 xml은 확실히 다 쳤는데 원인을 모르겠네요.. tess-two 모듈도 확실히 임포트 시키고 sync도 다 맞췄습니다.
    build.gradle의 compileSDKversion 값은 25 최소 9 타겟 25 빌드툴은 25.0.1입니다. 어제 깔아서 버전차이가 꽤나네요.

    어느부분이 부족해서 카메라 촬영만 되는걸까요..?
    촬영하고나면 촬영한 사진과 아래에 저장하기와 저장하지 않음 버튼 두개가 나올 뿐이네요 ㅠㅠ 둘다 누르면 저장되거나 말거나 원래의 화면으로만 돌아옵니다.

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2016.12.12 11:26 신고 EDIT/DEL

      글쎄요 ㅠ
      저는 다시시도, 확인 버튼 2개가 보이네요

      혹시나 버전을 맞춰보시는게...
      tess-two 는 9 ~ 22 까지로 설정되어있습니다

  • 2017.02.03 15:18 ADDR EDIT/DEL REPLY

    비밀댓글입니다

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2017.02.03 15:23 신고 EDIT/DEL

      r 구문이 어디부분인지 오류로그는 어떤지를알려주셔야 그나마 대략적인오류상황을 유추해볼수잇을듯해요

    • Newplus 2017.02.03 15:32 EDIT/DEL

      MainActivity에 있는 101번 쯤에 위치하는 findViewByID(R. 여기에서 빨간줄로 에러가 뜨며 오류 로그로는 위에 있는 댓글과 동일하게 Error:Execution failed for task ':tess-two:ndkClean'.
      > A problem occurred starting process 'command 'ndk-build.cmd''

      발생하고 있습니다

    • 2017.02.03 15:40 EDIT/DEL

      비밀댓글입니다

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2017.02.03 15:44 신고 EDIT/DEL

      포스팅을 보고 잘 따라오셨다면 ndk 가 정상적으로 설정되어있는지 확인해볼 필요가 있습니다

    • 2017.02.03 15:46 EDIT/DEL

      비밀댓글입니다

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2017.02.03 16:24 신고 EDIT/DEL

      어떻게 기본 셋팅을 하셨는지는 모르겠지만 저는 java부터 ndk 등 안드로이드 개발환경에 필요한 요소들은 직접 설치하고 환경변수를 수동으로 잡아주었습니다.

    • 2017.02.03 16:32 EDIT/DEL

      비밀댓글입니다

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2017.02.03 17:00 신고 EDIT/DEL

      어렵지않은곳에서 해결하셨다니 다행이네요 ㅎㅎ
      포스팅을 보고 따라하더라도 간혹 누락이 생겨 오류가 발생하곤 하더라구요
      카메라로 이미지를 찍어서 분석하는 부분은 이미 샘플프로젝트에 포함되어 있고 저장하는 부분은 따로 없기 때문에 직접 추가해야 하는게 맞습니다. ㅎㅎ

    • Newplus 2017.02.03 17:17 EDIT/DEL

      네 알겠습니다 ㅎ
      귀한시간 내주어 답변 해주셔서 감사합니다 !!

  • 2017.02.07 13:50 ADDR EDIT/DEL REPLY

    비밀댓글입니다

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2017.02.07 14:50 신고 EDIT/DEL

      인식이 잘 되게 하려면 별도로 트레이닝하는수 밖에는 없습니다 ㅠ

    • 궁금이 2017.02.07 15:27 EDIT/DEL

      네 알겠습니당 ㅎ 좋은 하루 되세여 ~

    • 궁금이 2017.02.07 17:03 EDIT/DEL

      예제 샘플코드로 실행 하였을때 인식률이 낮으면 출력 결과가 알 수 없는 문자로 나오는게 정상인가요 ?

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2017.02.07 17:14 신고 EDIT/DEL

      결과중 이상한 특수문자로 표현될 수 도 있습니다.
      이는 특정 문자를 잘못 인식하여 표현하기 때문이지 않을까 하는 생각이 듭니다. ㅠ

    • 궁금이 2017.02.07 17:19 EDIT/DEL

      아항 그렇군요 ㅎ
      이상하게 영문 인식하려고 하면 계속 이상한 문자가 나와서 난감했는데 지금 한글 인식하니깐 인식률은 떨어져도 그나마 가깝게 나오더라구요 ㅎ 친절한 답변 감사합니다 !

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2017.02.07 18:06 신고 EDIT/DEL

      traineddata 파일을 용도에 맞게 변경하시면서 하는거 맞죠 ?ㅎㅎ

    • 궁금이 2017.02.08 09:35 EDIT/DEL

      네네 변경하면서 하고 있어여 ㅎ

    • 2017.02.08 15:26 EDIT/DEL

      비밀댓글입니다

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2017.02.08 17:01 신고 EDIT/DEL

      트레이닝 할 때 어떤 기준으로 BOX 처리하느냐에 따라 다르지 않을까요 ㅎㅎ
      한글자 기준으로 BOX 처리하는게 효율적이라는 이야기가 많고 그렇게 되면 중간중간에 다른 문자를 섞는다고 좋고 나쁨이 생기지는 않을것 같아요 ㅎㅎ

    • 궁금이 2017.02.10 14:32 EDIT/DEL

      한 글자씩 BOX 처리해서 해보았는데 비슷비슷한거 같기도해서여 ㅋㅋㅋ 답변 감사합니다 ㅎ

  • dnwlgks 2017.03.21 17:35 ADDR EDIT/DEL REPLY

    Eror:(35,0) Could not get unknown property 'Os' for task ':app:ndkBuild' of type org.gradle.api.tasks.Exec.
    이런 에러 뜨는데
    task ndkBuild(type: Exec) {
    def ndkBuildExt = Os.isFamily(Os.FAMILY_WINDOWS) ? ".cmd" : ""
    commandLine "ndk-build${ndkBuildExt}", '-C', file('.').absolutePath,
    '-j', Runtime.runtime.availableProcessors()

    이부분이 잘못 된것 같은데 어떻게 수정하면 될까여?

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2017.03.21 18:40 신고 EDIT/DEL

      http://cofs.tistory.com/268

      여기에 비슷한 유형이 있는듯 하네요 ㅎㅎ

  • taeiim 2017.06.11 19:10 ADDR EDIT/DEL REPLY

    Error:Execution failed for task ':tess-two:ndkClean'.
    > A problem occurred starting process 'command 'ndk-build.cmd''

    이런 에러가 떠서 ndk 설정하는 부분 가보니깐
    Os.FAMILY_WINDOWS 라고 되있더라고요
    저는 mac을 사용하고 있는데
    mac인 경우에는 따로 변경을 해줘야하나요?

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2017.06.12 09:24 신고 EDIT/DEL

      저도 잘 모르는 부분이라 찾아봣더니 windows 일때와 그렇지 않을 경우를 분기해줘야 한다고 하네요

      if (Os.isFamily(Os.FAMILY_WINDOWS)) {
      command += "\\ndk-build.cmd"
      } else {
      command += "/ndk-build"
      }

      이런 형태로 작성하는 것 같은데 참고가 되시길 바래요 ㅎㅎ

  • Nibya 2017.06.23 01:47 ADDR EDIT/DEL REPLY

    프로젝트를 빌드하는데 20분넘게 걸리더군요 원래 이런건가요??? 확인해보니 프로젝트 전체 용량이 600MB를 넘어가던데... 정상인가요 ; 순서대로 다 했고 min SDKversion 24, target SDKversion 25, com.android.support:appcompat-v7:25.3.1말고는 차이가 없습니다. 또, 너무 오래걸려서 빌드를 취소했더니 프로세스에 clang++과 clang이 CPU를 대부분 잡아먹어서 다른 작업에 엄청나게 지장을주더군요... 무슨문제일까요?

    • Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS 2017.06.28 10:19 신고 EDIT/DEL

      20분이 걸리지는 않는데 시간은 꽤 걸렸던거 같네요
      라이브러리 자체가 무겁습니다ㅜㅜ

  • 2018.08.24 16:29 ADDR EDIT/DEL REPLY

    비밀댓글입니다