안드로이드에서 돌아가는 초경량 중국어 OCR… 순수 C++로 직접 만들어봤다

chineseocr_lite의 Android Java/JNI 레이어를 제거하고 순수 C++로 aarch64 네이티브 실행파일로 포팅했다. ncnn과 OpenCV-mobile을 사용해 ARM64, x86_64 등 4개 ABI를 지원하며, Debug 모드에서 Release 최적화로 전환해 추론 시간을 14.6초에서 380ms로 단축했다. 사용자 정의 .raw 이미지 포맷을 도입하고 main() 함수로 진입점을 변경, adb shell에서 직접 실행 가능하다.

AI 요약

chineseocr_lite의 안드로이드 Java/JNI 레이어를 제거하고 순수 C++로 aarch64 네이티브 실행파일로 포팅한 과정을 상세히 기록했다. main() 함수로 진입점을 변경하고, 사용자 정의 .raw 이미지 포맷을 도입했으며, CMake로 4가지 ABI(arm64-v8a, armeabi-v7a, x86, x86_64)를 지원한다. 성능 최적화를 통해 Debug 모드 14.6초에서 Release 모드 380ms로 38배 이상 속도를 개선했으며, ncnn과 OpenCV-mobile을 활용한 경량화가 핵심이다.

핵심 포인트

  • JNI 제거: JNI_OnLoad → main(), bitmapToMat → readImg()로 대체
  • 사용자 정의 .raw 포맷: 4바이트 너비 + 4바이트 높이 + 8바이트 예약 + RGBA 픽셀 데이터
  • 성능 최적화: Debug 14.6초 → Release 380ms (O2 최적화, -DNDEBUG)
  • 4가지 ABI 지원: arm64-v8a(기본), armeabi-v7a, x86, x86_64

향후 전망

  • 모바일 기기에서 경량 OCR 엔진의 네이티브 실행 수요 증가
  • Rust 등 다른 언어로의 포팅 사례 확장 가능성
Share

이것도 읽어보세요

댓글

이 소식에 대한 의견을 자유롭게 남겨주세요.

댓글 (0)

불러오는 중...