← All apps / 전체 앱 목록

Privacy Policy

Text Extract from Photo

Text Extract from Photo for Android — package com.nexperlabmedia.textgrab

Effective date: 2026-09-12 · Last updated: 2026-09-15

At a glance

This app reads the text in a photo. The recognition runs with Google ML Kit text recognition on your device: the image is processed locally and is never uploaded — not to the developer and not to Google. The app has no account, no login and no developer-operated server. Google AdMob (advertising) and Google Play Billing (the ad-free purchase) are the only third parties involved. Version 1.1.0 adds three things, all of them local: the source photo of an extraction is now archived in the app’s own private storage so the same picture can be recognised again in another script; results can be exported as a .txt or .pdf file, written to the app’s cache and handed to Android’s share sheet; and recognised text can be read out loud by the text-to-speech engine installed on your device, which on many phones is a separate third-party app.

Data sent to the developerNone. The developer operates no server for this app.
Account or sign-inNone.
Local dataYour extraction history (the recognised text) and, from 1.1.0, the source photo of each entry archived in the app’s private storage — both on this phone only — plus your settings: the history switch, auto-copy, column mode, the chosen script, the speaking rate, the onboarding flag, app language, and whether the ad-free purchase is active
Photos / camera framesRecognised on the device. If history is on, the source photo is copied into the app’s private storage and stays there until you delete the entry; otherwise nothing is kept. No image is uploaded and no server-side copy of anything you scan exists.
Reading aloudOptional. The recognised text is handed to the text-to-speech engine installed on your device, which may be a third-party app with its own privacy policy.
Third partiesGoogle AdMob (banner and interstitial ads) and Google Play Billing (the ad-free purchase). No analytics SDK and no crash-reporting SDK.
Permissions declaredCAMERA, AD_ID, BILLING, INTERNET, ACCESS_NETWORK_STATE, ACCESS_ADSERVICES_*

1. What the app stores on your device

Everything the app keeps is in its own private shared_preferences, on this phone only: the extraction history (the text that was recognised), the keep_history switch (on by default — turn it off in Settings and past extractions stop being stored), the auto_copy_first switch (copies the first recognised block to the clipboard), the script you selected, the onboarding flag, the app language, the ad-free state (ad_free) and the ad-pacing counters (interstitial_last_day, lifetime_core_actions). None of it is transmitted to the developer, and there is no server-side copy of anything you scan.

Version 1.1.0 adds one more local store and one more preference. Archived source photos: when an extraction is saved to the history, the picture it came from is copied into a captures folder inside the app’s private support directory, so that the same picture can be recognised again in a different script without asking you to take it twice. That copy is app-private — other apps cannot read it — and it is deleted together with the history entry: when you delete one entry, when you delete several, when you clear the whole history, and when you turn history off in Settings, which also deletes everything already stored. On start-up the app additionally prunes any archived image no history entry refers to any more. The speaking rate (speech_rate) is stored like the other settings. Nothing here is transmitted to the developer.

2. Images and on-device recognition

An image reaches the app one of two ways: from the camera, or from the system photo picker (which needs no permission and gives the app only the picture you chose — never your whole photo library). The image is then read by Google ML Kit text recognition on the device. Latin, Korean, Japanese and Chinese scripts are supported; if a script's model is not present, recognition falls back to Latin.

The manifest carries the meta-data com.google.mlkit.vision.DEPENDENCIES = ocr, so Google Play services downloads the recognition model at install time. That model download is the only network traffic the recognition causes, and it carries no image of yours and no text recognised from one.

Since 1.1.0 that image is no longer discarded the moment it has been read: if history is on, it is archived as described in section 1 so you can re-run recognition on it in another script. The archive lives in the app’s private storage only. If history is off, the picture is used for recognition and then left behind — nothing is written.

3. Reading aloud

A recognised extraction can be read out loud. The app does not synthesise speech itself: through flutter_tts it hands the text, sentence by sentence, to the text-to-speech engine installed on your device. That engine is frequently a separate third-party app — one shipped by your device maker, or one you installed — and some engines synthesise speech on their own servers rather than on the phone. What the engine does with the text it receives is governed by that engine’s privacy policy, not by this one. You can see and change the active engine in Android Settings → Accessibility → Text-to-speech output. If you never use the read-aloud feature, no text is ever handed to an engine. The speaking rate you choose is kept locally (speech_rate); no audio is recorded and no microphone is involved.

4. What the app does not collect

The app does not request or read your name, email address, phone number, contacts, messages, calendar, location, or any file outside the places described above. It has no account system, no sign-in and no cloud sync, and it contains no analytics SDK and no crash-reporting SDK. Apart from the requests the advertising, billing and model-download components make, the app makes no network request of its own.

Three permissions are deliberately not requested. The camera and sharing libraries would otherwise merge them in, so the app's manifest strips them out with tools:node="remove": RECORD_AUDIO (the microphone — the camera runs with audio disabled), READ_EXTERNAL_STORAGE and WRITE_EXTERNAL_STORAGE (legacy shared-storage access). They do not appear in the installed package. The app also never requests any READ_MEDIA_* permission: the system photo picker works without one, so the app never gets access to your whole photo library.

Version 1.1.0 added no permission: archiving writes only to the app’s own private storage, exporting writes to the app’s own cache before the share sheet takes over, and reading aloud goes through the system’s speech service. The permission list in the installed package is unchanged.

5. Advertising (Google AdMob) and consent

The app shows a banner ad and, occasionally after a completed action, a full-screen interstitial through the Google Mobile Ads SDK. To serve and measure those ads, Google may process your device's advertising ID (AD_ID), coarse device and network information, and ad interaction events. This happens inside Google's SDK; the developer does not see or store that data, and no image you scan and no text it recognises is given to it.

  • Google's handling of that data: How Google uses information from sites or apps that use our services, and the Google Privacy Policy
  • In the EEA, the UK and Switzerland the app shows a Google-certified consent message (Google User Messaging Platform, UMP) before personalised ads are used. You can reopen it later from Settings → Privacy settings and change your choice.
  • You can reset or delete the advertising ID at any time in Android Settings → Privacy → Ads. Deleting it stops personalised advertising on the device.

6. Ad-free purchase

A one-time in-app purchase (text_grab_premium) removes the ads. The purchase is processed entirely by Google Play Billing: the developer never receives your card number, billing address or any other payment detail, and sees only Play's aggregated sales reports. The app stores locally whether the purchase is active, so ads stop showing. Restoring the purchase on another device is handled by your Google Play account.

7. Permissions

The app declares android.permission.CAMERA (the camera), com.google.android.gms.permission.AD_ID and com.android.vending.BILLING itself. The rest are merged in automatically by the libraries it uses:

  • INTERNET, ACCESS_NETWORK_STATE, ACCESS_ADSERVICES_AD_ID / ATTRIBUTION / TOPICS — merged in by the Google Mobile Ads SDK, to fetch and measure ads
  • com.android.vending.BILLING — the ad-free in-app purchase, handled by Google Play
  • The camera hardware is declared as a feature with required="false" (both android.hardware.camera and android.hardware.camera.flash), so a tablet without a camera can still install the app and use the photo-picker path

8. Sharing, links and export

Recognised text may contain a web address, a phone number or an email address. The app never opens them by itself — an intent leaves the app only when you tap one. The <queries> entries in the manifest for VIEW (https), DIAL (tel) and SENDTO (mailto) exist only so that Android 11 and later lets the app see that a browser, dialler or mail app is installed; without them your tap would silently fail.

Sharing goes through Android's share sheet: you pick the app that receives the text, and that app then handles it under its own privacy policy. Neither route passes through any server of the developer.

Export. An extraction can be written out as a .txt or .pdf file. The file is built on the device — the PDF is composed by the app itself, with no external service — and written into the app’s temporary (cache) directory, then passed to the share sheet so you choose where it goes. Text that the PDF’s built-in font cannot represent is drawn as an image page instead, still entirely on the device. Files in the cache directory are the system’s to reclaim; nothing is uploaded by the app.

9. Automatic backup

The manifest does not disable Android backup (allowBackup="true"). Under Android's default behavior, eligible local data may be copied to your own Google-account device backup. The developer cannot access or control that copy. What is actually backed up depends on your device, vendor and Android version.

10. How long data is kept, and how to delete it

Settings stay until you change them. History entries stay until you delete them — individually, or by turning history off in Settings, after which past extractions stop being stored. Clearing the app's storage in Android settings, or uninstalling the app, removes all of the app's data. Because nothing is sent anywhere, there is no other copy to delete.

An archived source photo has exactly the lifetime of the history entry it belongs to: delete the entry and the photo goes with it, turn history off and every archived photo is deleted along with the history. Exported files live in the app’s cache until the system reclaims them, or wherever you sent them with the share sheet — those copies are yours to manage.

11. Children

The app is not directed to children and the developer does not knowingly collect personal information from children.

12. Changes to this policy

If the app's permissions, SDKs or data practices change, this page and its “last updated” date will be revised.

13. Contact

Questions about this policy:

  • Company: Nexperlab Co., Ltd.
  • Address: 2F, 21, Gangnam-daero 107-gil, Seocho-gu, Seoul, Republic of Korea
  • Email: nexperlabmedia@gmail.com
This factual description was checked against the app's manifest, dependency list and source code. It is not legal advice.

개인정보처리방침

Text Extract from Photo

Text Extract from Photo (Android) — 패키지 com.nexperlabmedia.textgrab

시행일: 2026-09-12 · 최종 수정일: 2026-09-15

한눈에 보기

이 앱은 사진 속 글자를 읽어낸다. 인식은 Google ML Kit 텍스트 인식으로 기기 안에서 이루어진다. 이미지는 기기에서 처리되며 어디로도 업로드되지 않는다 — 개발자에게도, Google에도 보내지 않는다. 계정도, 로그인도, 개발자가 운영하는 서버도 없다. 관여하는 제3자는 Google AdMob(광고)와 Google Play 결제(광고 제거 구매)뿐이다. 1.1.0은 세 가지를 더하며 모두 기기 안에서 끝난다. 추출의 원본 사진을 앱 전용 저장소에 보관해 같은 사진을 다른 문자로 다시 인식할 수 있게 했고, 결과를 .txt·.pdf 파일로 내보내 앱 캐시에 쓴 뒤 Android 공유 시트로 넘길 수 있게 했으며, 인식된 글자를 기기에 설치된 음성 합성(TTS) 엔진으로 읽어줄 수 있게 했다 — 이 엔진은 많은 기기에서 별도의 제3자 앱이다.

개발자에게 전송되는 데이터없음. 이 앱을 위한 개발자 서버가 없다.
계정·로그인없음.
로컬 데이터추출 기록(인식된 텍스트)과, 1.1.0부터는 각 기록의 원본 사진(앱 전용 저장소 보관) — 둘 다 이 기기에만 있다 — 그리고 설정값: 기록 보관 스위치, 자동 복사, 단 모드, 선택한 문자, 읽어주기 속도, 온보딩 표시, 앱 언어, 광고 제거 구매 활성 여부
사진·카메라 영상기기 안에서 인식한다. 기록 보관이 켜져 있으면 원본 사진을 앱 전용 저장소로 복사해 항목을 지울 때까지 보관하고, 꺼져 있으면 아무것도 남기지 않는다. 이미지는 업로드되지 않고, 스캔한 것의 서버 사본도 없다.
읽어주기선택 기능. 인식된 텍스트를 기기에 설치된 음성 합성(TTS) 엔진에 넘긴다 — 자체 방침을 가진 제3자 앱일 수 있다.
제3자Google AdMob(배너·전면 광고)와 Google Play 결제(광고 제거 구매). 분석 SDK·크래시 리포팅 SDK는 없다.
선언 권한CAMERA, AD_ID, BILLING, INTERNET, ACCESS_NETWORK_STATE, ACCESS_ADSERVICES_*

1. 앱이 기기에 저장하는 것

앱이 보관하는 것은 모두 앱 전용 shared_preferences 안에, 이 기기에만 있다: 추출 기록(인식된 텍스트), keep_history 스위치(기본 켜짐 — 설정에서 끄면 이후 추출 결과는 저장되지 않는다), auto_copy_first 스위치(첫 번째 인식 블록을 클립보드에 복사), 선택한 문자 체계, 온보딩 완료 표시, 앱 언어, 광고 제거 상태(ad_free), 광고 노출 간격 카운터(interstitial_last_day, lifetime_core_actions). 이 가운데 어느 것도 개발자에게 전송되지 않으며, 스캔한 내용의 서버 측 사본도 존재하지 않는다.

1.1.0은 여기에 로컬 저장 하나와 설정 하나를 더한다. 원본 사진 보관: 추출 결과가 기록에 저장될 때, 그 사진을 앱 전용 지원 디렉터리 안 captures 폴더로 복사해 둔다. 같은 사진을 다른 문자로 다시 인식할 때 사용자에게 두 번 찍게 하지 않기 위해서다. 이 사본은 앱 전용이라 다른 앱이 읽을 수 없고, 기록 항목과 함께 지워진다 — 한 건을 지울 때, 여러 건을 지울 때, 기록 전체를 지울 때, 그리고 설정에서 기록 보관을 끌 때(이때는 이미 저장된 것도 함께 지운다). 앱은 시작할 때 어떤 기록도 가리키지 않는 보관 이미지를 정리한다. 읽어주기 속도(speech_rate)는 다른 설정값과 같은 방식으로 저장된다. 이 가운데 어느 것도 개발자에게 전송되지 않는다.

2. 이미지와 기기 내 인식

이미지는 두 경로로 앱에 들어온다: 카메라, 또는 시스템 사진 선택기(권한이 필요 없고, 사용자가 고른 사진만 앱에 전달된다 — 사진첩 전체가 아니다). 그 다음 Google ML Kit 텍스트 인식이 기기 안에서 이미지를 읽는다. 라틴 문자, 한글, 일본어, 중국어를 지원하며, 해당 문자 체계의 모델이 없으면 라틴 문자 인식으로 대체된다.

매니페스트에는 메타데이터 com.google.mlkit.vision.DEPENDENCIES = ocr가 들어 있어 설치 시 Google Play 서비스가 인식 모델을 내려받는다. 인식과 관련해 발생하는 통신은 이 모델 다운로드뿐이며, 여기에는 사용자의 이미지도, 거기서 인식된 텍스트도 실리지 않는다.

1.1.0부터는 읽어낸 직후에 그 이미지를 버리지 않는다. 기록 보관이 켜져 있으면 1항에서 설명한 대로 보관해 다른 문자로 다시 인식할 수 있게 한다. 보관 위치는 앱 전용 저장소뿐이다. 기록 보관이 꺼져 있으면 인식에만 쓰고 아무것도 기록하지 않는다.

3. 읽어주기

인식한 결과를 소리내어 읽게 할 수 있다. 앱이 직접 음성을 만들지는 않는다. flutter_tts를 통해 문장 단위로 기기에 설치된 음성 합성(TTS) 엔진에 텍스트를 넘긴다. 그 엔진은 별도의 제3자 앱인 경우가 많고(제조사가 넣어둔 것일 수도, 사용자가 설치한 것일 수도 있다), 엔진에 따라서는 기기가 아니라 자사 서버에서 음성을 합성하기도 한다. 엔진이 넘겨받은 글자를 어떻게 다루는지는 이 방침이 아니라 그 엔진의 개인정보처리방침이 정한다. 현재 엔진은 Android 설정 → 접근성 → 텍스트 음성 변환 출력에서 확인하고 바꿀 수 있다. 읽어주기를 쓰지 않으면 어떤 글자도 엔진으로 넘어가지 않는다. 선택한 읽기 속도는 기기에만 저장된다(speech_rate). 음성을 녹음하지 않으며 마이크는 쓰이지 않는다.

4. 앱이 수집하지 않는 것

앱은 이름, 이메일 주소, 전화번호, 연락처, 메시지, 캘린더, 위치, 위에서 설명한 곳 밖의 파일을 요구하거나 읽지 않는다. 계정 시스템도, 로그인도, 클라우드 동기화도 없고 분석 SDK·크래시 리포팅 SDK도 들어 있지 않다. 광고·결제 SDK와 모델 다운로드가 하는 통신 외에 앱 자체의 네트워크 요청은 없다.

세 가지 권한은 의도적으로 요청하지 않는다. 카메라·공유 라이브러리가 그대로 두면 병합해 넣기 때문에, 앱 매니페스트에서 tools:node="remove"로 잘라낸다: RECORD_AUDIO(마이크 — 카메라는 오디오를 끈 채로 동작한다), READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE(구형 공용 저장소 접근). 설치되는 패키지에 이 권한들은 없다. 또한 앱은 READ_MEDIA_* 계열 권한도 전혀 요청하지 않는다. 시스템 사진 선택기는 그런 권한 없이 동작하므로, 앱이 사진첩 전체에 접근하는 일은 없다.

1.1.0에서 새로 추가된 권한은 없다. 사진 보관은 앱 전용 저장소에만 쓰고, 내보내기는 공유 시트로 넘기기 전에 앱 전용 캐시에만 쓰며, 읽어주기는 시스템의 음성 서비스를 거친다. 설치되는 패키지의 권한 목록은 그대로다.

5. 광고 (Google AdMob)와 동의

앱은 Google Mobile Ads SDK를 통해 배너 광고를 표시하고, 작업을 마친 뒤 이따금 전면 광고를 띄운다. 광고를 게재하고 측정하기 위해 Google은 기기의 광고 ID(AD_ID), 대략적인 기기·네트워크 정보, 광고 상호작용 기록을 처리할 수 있다. 이는 Google의 SDK 안에서 일어나며 개발자는 그 데이터를 보거나 저장하지 않는다. 사용자가 스캔한 이미지도, 거기서 인식된 텍스트도 광고 SDK에 전달되지 않는다.

6. 광고 제거 구매

일회성 인앱 상품(text_grab_premium)을 구매하면 광고가 사라진다. 결제는 전적으로 Google Play 결제가 처리한다. 개발자는 카드 번호·청구 주소 등 어떤 결제 정보도 받지 않으며 Play가 제공하는 집계 판매 보고서만 본다. 앱은 구매가 활성 상태인지만 기기에 저장해 광고를 끈다. 다른 기기에서의 구매 복원은 사용자의 Google Play 계정이 처리한다.

7. 권한

앱이 직접 선언하는 것은 android.permission.CAMERA(카메라), com.google.android.gms.permission.AD_ID, com.android.vending.BILLING이다. 나머지는 앱이 쓰는 라이브러리가 자동으로 병합한 것이다:

  • INTERNET, ACCESS_NETWORK_STATE, ACCESS_ADSERVICES_AD_ID / ATTRIBUTION / TOPICS — Google Mobile Ads SDK가 광고를 받아오고 측정하는 데 쓰며 자동 병합된다
  • com.android.vending.BILLING — 광고 제거 인앱 구매용. Google Play가 처리한다
  • 카메라 하드웨어는 required="false"인 기능으로 선언한다(android.hardware.camera, android.hardware.camera.flash). 카메라가 없는 태블릿에서도 설치해 사진 선택기 경로로 사용할 수 있다

8. 공유·링크와 내보내기

인식된 텍스트에는 웹 주소, 전화번호, 이메일 주소가 들어 있을 수 있다. 앱이 스스로 그것을 여는 일은 없다 — 사용자가 눌렀을 때만 인텐트가 앱 밖으로 나간다. 매니페스트의 <queries> 항목(VIEW https, DIAL tel, SENDTO mailto)은 Android 11 이상에서 브라우저·전화·메일 앱이 설치돼 있는지 앱이 확인할 수 있게 하려고 있을 뿐이다. 이 항목이 없으면 눌러도 아무 일 없이 실패한다.

공유는 Android 공유 시트를 거친다. 텍스트를 받을 앱은 사용자가 고르고, 그 앱이 자체 방침에 따라 텍스트를 다룬다. 어느 경로도 개발자의 서버를 거치지 않는다.

내보내기. 추출 결과를 .txt나 .pdf 파일로 쓸 수 있다. 파일은 기기에서 만들어지고(PDF도 앱이 직접 구성하며 외부 서비스를 쓰지 않는다) 앱 임시(캐시) 디렉터리에 써진 뒤 공유 시트로 넘어가, 어디로 보낼지는 사용자가 고른다. PDF 내장 글꼴로 표현할 수 없는 글자는 이미지 페이지로 그려 넣는데, 이 역시 전부 기기 안에서 이루어진다. 캐시 디렉터리의 파일은 시스템이 회수하며, 앱이 업로드하는 것은 없다.

9. 자동 백업

매니페스트는 Android 백업을 비활성화하지 않는다(allowBackup="true"). Android 기본 동작에 따라 일부 로컬 데이터가 사용자 본인의 Google 계정 기기 백업으로 복사될 수 있다. 개발자는 그 사본에 접근하거나 제어할 수 없다. 실제 백업 범위는 기기·제조사·Android 버전에 따라 다르다.

10. 보관 기간과 삭제 방법

설정은 바꾸기 전까지 남는다. 기록은 사용자가 지울 때까지 남는다 — 하나씩 지우거나, 설정에서 기록 보관을 끄면 이후 추출 결과는 저장되지 않는다. Android 설정에서 앱 데이터를 삭제하거나 앱을 제거하면 앱이 가진 데이터는 모두 사라진다. 어디로도 전송하지 않으므로 그 밖에 지울 사본은 없다.

보관된 원본 사진의 수명은 그 기록 항목과 정확히 같다. 항목을 지우면 사진도 함께 사라지고, 기록 보관을 끄면 보관된 사진이 기록과 함께 모두 지워진다. 내보낸 파일은 시스템이 회수할 때까지 앱 캐시에 있거나, 공유 시트로 보낸 곳에 있으며 그 사본은 사용자가 관리한다.

11. 아동

이 앱은 아동을 대상으로 하지 않으며 개발자는 아동의 개인정보를 고의로 수집하지 않는다.

12. 방침 변경

앱의 권한·SDK·데이터 처리 방식이 바뀌면 이 페이지와 최종 수정일을 갱신한다.

13. 문의

이 방침에 대한 문의:

  • 회사: 주식회사 넥스퍼랩 (Nexperlab Co., Ltd.)
  • 주소: 서울특별시 서초구 강남대로107길 21, 2층
  • 이메일: nexperlabmedia@gmail.com
앱의 매니페스트·의존성 목록·소스 코드를 확인해 작성한 사실 설명이며 법률 자문이 아니다.

プライバシーポリシー

Text Extract from Photo

Text Extract from Photo (Android) — パッケージ com.nexperlabmedia.textgrab

施行日: 2026-09-12 · 最終更新日: 2026-09-15

概要

本アプリは写真に写っている文字を読み取る。認識は Google ML Kit のテキスト認識により端末内で行われる。画像は端末内で処理され、どこにもアップロードされない — 開発者にも Google にも送られない。アカウント、ログイン、開発者が運営するサーバーはない。関与する第三者は Google AdMob(広告)と Google Play 課金(広告除去の購入)だけである。 バージョン 1.1.0 では 3 つが加わり、いずれも端末内で完結する。抽出の元になった写真をアプリ専用領域に保管して同じ写真を別の文字体系で再認識できるようにしたこと、結果を .txt・.pdf として書き出し(アプリのキャッシュに書いて Android の共有シートへ渡す)こと、そして認識されたテキストを端末に入っている音声合成 (TTS) エンジンで読み上げられるようにしたことである。このエンジンは多くの端末で別の第三者アプリである。

開発者への送信データなし。本アプリ用の開発者サーバーは存在しない。
アカウント・ログインなし。
ローカルデータ抽出履歴(認識されたテキスト)と、1.1.0 以降は各項目の元写真(アプリ専用領域に保管) — いずれもこの端末内のみ — に加えて設定: 履歴スイッチ、自動コピー、段組みモード、選択中の文字体系、読み上げ速度、オンボーディングフラグ、アプリの言語、広告除去購入の有効状態
写真・カメラ映像端末内で認識する。履歴が有効なら元写真をアプリ専用領域へ複製し、利用者が項目を削除するまで保持する。無効なら何も残さない。画像はアップロードされず、スキャンしたもののサーバー側の控えも存在しない。
読み上げ任意の機能。認識されたテキストを端末に入っている音声合成 (TTS) エンジンに渡す — 独自のポリシーを持つ第三者アプリのことがある。
第三者Google AdMob(バナー・インタースティシャル広告)と Google Play 課金(広告除去の購入)。分析 SDK・クラッシュ報告 SDK は含まない。
宣言権限CAMERA, AD_ID, BILLING, INTERNET, ACCESS_NETWORK_STATE, ACCESS_ADSERVICES_*

1. アプリが端末に保存するもの

アプリが保持するものはすべて、アプリ専用の shared_preferences 内、この端末内だけにある: 抽出履歴(認識されたテキスト)、keep_history スイッチ(既定でオン。設定でオフにすると以後の抽出結果は保存されない)、auto_copy_first スイッチ(最初に認識したブロックをクリップボードへコピー)、選択中の文字体系、オンボーディング完了フラグ、アプリの言語、広告除去の状態 (ad_free)、広告表示間隔のカウンター (interstitial_last_day, lifetime_core_actions)。いずれも開発者には送信されず、スキャンした内容のサーバー側の控えも存在しない。

1.1.0 ではローカル保存が 1 つ、設定が 1 つ加わった。元写真の保管: 抽出結果が履歴に保存されるとき、その元になった写真をアプリ専用のサポートディレクトリ内 captures フォルダーへ複製する。同じ写真を別の文字体系で再認識する際に、利用者に二度撮らせないためである。この複製はアプリ専用で他のアプリからは読めず、履歴項目と一緒に削除される — 1 件の削除、複数件の削除、履歴全体の削除、そして設定で履歴の保存をオフにしたとき(このときは保存済みのものも消える)。起動時には、どの履歴項目からも参照されていない保管画像を整理する。読み上げ速度 (speech_rate) は他の設定と同じ方法で保存される。いずれも開発者には送信されない。

2. 画像と端末内での認識

画像は 2 つの経路でアプリに入る: カメラ、またはシステムの写真ピッカー(権限は不要で、利用者が選んだ写真だけがアプリに渡される — 写真ライブラリ全体ではない)。その画像を Google ML Kit のテキスト認識が端末内で読み取る。ラテン文字、韓国語、日本語、中国語に対応し、該当する文字体系のモデルがない場合はラテン文字の認識に切り替わる。

マニフェストにはメタデータ com.google.mlkit.vision.DEPENDENCIES = ocr が含まれ、インストール時に Google Play 開発者サービスが認識モデルをダウンロードする。認識に伴う通信はこのモデルのダウンロードのみで、そこに利用者の画像や、そこから認識されたテキストは含まれない。

1.1.0 以降、読み取った直後にその画像を捨てることはしない。履歴が有効なら第 1 項のとおり保管し、別の文字体系で再認識できるようにする。保管先はアプリ専用領域だけである。履歴が無効なら、認識に使うだけで何も書き込まない。

3. 読み上げ

認識した結果を読み上げさせることができる。アプリ自身が音声を合成するわけではない。flutter_tts を介して、文単位で端末に入っている音声合成 (TTS) エンジンへテキストを渡す。そのエンジンは別の第三者アプリであることが多く(メーカーが導入したもの、あるいは利用者が自ら入れたもの)、エンジンによっては端末ではなく自社サーバーで音声を合成するものもある。受け取ったテキストをそのエンジンがどう扱うかは、本ポリシーではなくそのエンジンのプライバシーポリシーが定める。現在のエンジンは Android の設定 → ユーザー補助 → テキスト読み上げの出力で確認・変更できる。読み上げ機能を使わなければ、テキストがエンジンへ渡ることは一切ない。選んだ読み上げ速度は端末内にのみ保存される (speech_rate)。音声の録音は行わず、マイクも使わない。

4. アプリが収集しないもの

氏名、メールアドレス、電話番号、連絡先、メッセージ、カレンダー、位置情報、および上記以外の場所にあるファイルを要求・読み取りしない。アカウント機能もログインもクラウド同期もなく、分析 SDK・クラッシュ報告 SDK も含まれない。広告・課金 SDK とモデルのダウンロードが行う通信以外に、アプリ自身のネットワーク通信はない。

次の 3 つの権限は意図的に要求しない。カメラ・共有ライブラリが放置すると自動でマージするため、アプリのマニフェストで tools:node="remove" により削除している: RECORD_AUDIO(マイク — カメラは音声を無効にして動作)、READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE(旧来の共有ストレージ)。インストールされるパッケージにこれらは含まれない。また READ_MEDIA_* 系の権限も一切要求しない。システムの写真ピッカーは権限なしで動作するため、アプリが写真ライブラリ全体にアクセスすることはない。

1.1.0 で追加された権限はない。保管はアプリ専用領域にのみ書き、書き出しは共有シートへ渡す前にアプリ専用キャッシュへ書くだけで、読み上げはシステムの音声サービスを通る。インストールされるパッケージの権限一覧は変わっていない。

5. 広告 (Google AdMob) と同意

本アプリは Google Mobile Ads SDK を通じてバナー広告を表示し、操作の完了後にときどき全画面のインタースティシャル広告を表示する。広告の配信と測定のため、Google は端末の広告 ID (AD_ID)、おおまかな端末・ネットワーク情報、広告の操作記録を処理することがある。これは Google の SDK 内で行われ、開発者はそのデータを閲覧・保存しない。スキャンした画像も、そこから認識されたテキストも、広告 SDK に渡されることはない。

6. 広告除去の購入

買い切りのアプリ内購入 (text_grab_premium) で広告が消える。決済は全面的に Google Play 課金が処理し、開発者はカード番号や請求先住所などの支払い情報を一切受け取らない(Play の集計済み売上レポートのみを見る)。アプリは購入が有効かどうかだけを端末に保存して広告を止める。別の端末での購入復元は利用者の Google Play アカウントが扱う。

7. 権限

アプリ自身が宣言するのは android.permission.CAMERA(カメラ)、com.google.android.gms.permission.AD_ID、com.android.vending.BILLING である。その他は利用しているライブラリが自動的にマージしたものである:

  • INTERNET, ACCESS_NETWORK_STATE, ACCESS_ADSERVICES_AD_ID / ATTRIBUTION / TOPICS — Google Mobile Ads SDK が広告の取得と測定に用い、自動的にマージされる
  • com.android.vending.BILLING — 広告除去のアプリ内購入用。Google Play が処理する
  • カメラのハードウェアは required="false" の機能として宣言している (android.hardware.camera と android.hardware.camera.flash)。カメラのないタブレットでもインストールでき、写真ピッカー経由で利用できる

8. 共有・リンクとエクスポート

認識されたテキストには、ウェブアドレス、電話番号、メールアドレスが含まれることがある。アプリがそれらを自分で開くことはない — 利用者がタップしたときにだけインテントがアプリの外へ出る。マニフェストの <queries> の項目 (VIEW https、DIAL tel、SENDTO mailto) は、Android 11 以降でブラウザ・電話・メールのアプリが存在することをアプリが確認できるようにするためだけにある。これがないとタップしても何も起きずに失敗する。

共有は Android の共有シートを通る。テキストを受け取るアプリは利用者が選び、そのアプリが自身のポリシーに従って扱う。いずれの経路も開発者のサーバーを経由しない。

書き出し。抽出結果は .txt または .pdf として書き出せる。ファイルは端末上で作られ(PDF もアプリ自身が組み立て、外部サービスは使わない)、アプリの一時 (キャッシュ) ディレクトリに書き出してから共有シートへ渡され、送り先は利用者が選ぶ。PDF の内蔵フォントで表現できない文字は画像のページとして描画されるが、これも端末内で完結する。キャッシュ内のファイルはシステムが回収するものであり、アプリがアップロードすることはない。

9. 自動バックアップ

マニフェストは Android バックアップを無効にしていない (allowBackup="true")。既定の動作により、対象となるローカルデータが利用者自身の Google アカウント端末バックアップへコピーされる場合がある。開発者はそのコピーにアクセス・制御できない。実際の範囲は端末・メーカー・Android バージョンによる。

10. 保存期間と削除方法

設定は変更するまで残る。履歴は利用者が削除するまで残る — 個別に削除するか、設定で履歴の保存をオフにすると以後の抽出結果は保存されない。Android の設定でアプリのデータを削除するか、アプリをアンインストールすると、アプリが持つデータはすべて消える。どこにも送信していないため、ほかに削除すべき控えはない。

保管された元写真の寿命は、それが属する履歴項目とまったく同じである。項目を削除すれば写真も一緒に消え、履歴の保存をオフにすれば保管済みの写真も履歴とともに削除される。書き出したファイルはシステムが回収するまでアプリのキャッシュに、あるいは共有シートで送った先に残り、その控えは利用者が管理する。

11. 児童について

本アプリは児童を対象としておらず、開発者は児童の個人情報を故意に収集しない。

12. 本ポリシーの変更

権限、SDK、データの取扱いが変わった場合、本ページと更新日を改訂する。

13. お問い合わせ

本ポリシーに関するお問い合わせ:

  • 会社: Nexperlab Co., Ltd. (주식회사 넥스퍼랩)
  • 住所: 2F, 21, Gangnam-daero 107-gil, Seocho-gu, Seoul, Republic of Korea
  • メール: nexperlabmedia@gmail.com
アプリのマニフェスト、依存関係、ソースコードを確認して作成した事実の説明であり、法律上の助言ではない。

Política de privacidad

Text Extract from Photo

Text Extract from Photo para Android — paquete com.nexperlabmedia.textgrab

Fecha de entrada en vigor: 2026-09-12 · Última actualización: 2026-09-15

Resumen

Esta app lee el texto que aparece en una foto. El reconocimiento se realiza con el reconocimiento de texto de Google ML Kit en tu dispositivo: la imagen se procesa localmente y nunca se sube a ningún sitio, ni al desarrollador ni a Google. No tiene cuenta, ni inicio de sesión, ni servidor operado por el desarrollador. Google AdMob (publicidad) y la Facturación de Google Play (la compra sin anuncios) son los únicos terceros implicados. La versión 1.1.0 añade tres cosas, todas locales: la foto de origen de una extracción se archiva ahora en el almacenamiento privado de la app para poder reconocer la misma imagen en otro alfabeto; los resultados pueden exportarse como archivo .txt o .pdf, escrito en la caché de la app y entregado al menú de compartir de Android; y el texto reconocido puede leerse en voz alta con el motor de síntesis de voz instalado en tu dispositivo, que en muchos teléfonos es una app de terceros aparte.

Datos enviados al desarrolladorNinguno. No existe servidor del desarrollador para esta app.
Cuenta o inicio de sesiónNinguno.
Datos localesTu historial de extracciones (el texto reconocido) y, desde 1.1.0, la foto de origen de cada entrada archivada en el almacenamiento privado de la app —ambos solo en este teléfono— más tus ajustes: el interruptor de historial, la copia automática, el modo columna, el alfabeto elegido, la velocidad de lectura, el indicador de introducción, el idioma de la app y si la compra sin anuncios está activa
Fotos / imagen de la cámaraSe reconocen en el dispositivo. Si el historial está activado, la foto de origen se copia al almacenamiento privado de la app y permanece hasta que borras la entrada; si está desactivado, no se guarda nada. Ninguna imagen se sube y no existe copia en servidor de lo que escaneas.
Lectura en voz altaOpcional. El texto reconocido se entrega al motor de síntesis de voz instalado en tu dispositivo, que puede ser una app de terceros con su propia política.
TercerosGoogle AdMob (banner e intersticial) y Facturación de Google Play (la compra sin anuncios). Sin SDK de analítica ni de informes de fallos.
Permisos declaradosCAMERA, AD_ID, BILLING, INTERNET, ACCESS_NETWORK_STATE, ACCESS_ADSERVICES_*

1. Qué guarda la app en tu dispositivo

Todo lo que la app conserva está en sus propias shared_preferences privadas, solo en este teléfono: el historial de extracciones (el texto reconocido), el interruptor keep_history (activado de forma predeterminada; si lo desactivas en Ajustes, las extracciones dejan de guardarse), el interruptor auto_copy_first (copia al portapapeles el primer bloque reconocido), el sistema de escritura elegido, el indicador de introducción, el idioma de la app, el estado sin anuncios (ad_free) y los contadores que espacian los anuncios (interstitial_last_day, lifetime_core_actions). Nada de esto se transmite al desarrollador, y no existe copia en servidor de nada de lo que escanees.

La versión 1.1.0 añade un almacén local más y una preferencia más. Fotos de origen archivadas: cuando una extracción se guarda en el historial, la imagen de la que proviene se copia a una carpeta captures dentro del directorio de soporte privado de la app, para poder reconocer la misma imagen en otro alfabeto sin pedirte que la tomes dos veces. Esa copia es privada de la app —otras apps no pueden leerla— y se borra junto con la entrada del historial: al borrar una entrada, al borrar varias, al vaciar todo el historial y al desactivar el historial en Ajustes, lo que además borra todo lo ya guardado. Al arrancar, la app depura las imágenes archivadas que ya no corresponden a ninguna entrada. La velocidad de lectura (speech_rate) se guarda como los demás ajustes. Nada de esto se transmite al desarrollador.

2. Imágenes y reconocimiento en el dispositivo

Una imagen llega a la app por dos vías: la cámara o el selector de fotos del sistema (que no necesita permiso y entrega a la app únicamente la foto que elijas, nunca toda tu galería). Después, el reconocimiento de texto de Google ML Kit lee la imagen en el dispositivo. Se admiten los sistemas de escritura latino, coreano, japonés y chino; si falta el modelo de alguno, el reconocimiento recurre al latino.

El manifiesto incluye los metadatos com.google.mlkit.vision.DEPENDENCIES = ocr, de modo que los servicios de Google Play descargan el modelo de reconocimiento en el momento de la instalación. Esa descarga es el único tráfico de red que provoca el reconocimiento, y no lleva ninguna imagen tuya ni ningún texto reconocido de ella.

Desde 1.1.0 esa imagen ya no se descarta en cuanto se ha leído: si el historial está activado, se archiva como se describe en el apartado 1 para poder repetir el reconocimiento en otro alfabeto. El archivo vive únicamente en el almacenamiento privado de la app. Si el historial está desactivado, la imagen se usa para reconocer y no se escribe nada.

3. Lectura en voz alta

Una extracción reconocida puede leerse en voz alta. La app no sintetiza la voz por sí misma: a través de flutter_tts entrega el texto, frase a frase, al motor de síntesis de voz instalado en tu dispositivo. Ese motor suele ser una app de terceros aparte —la que trae el fabricante o la que hayas instalado tú— y algunos motores sintetizan la voz en sus propios servidores en lugar de en el teléfono. Lo que el motor haga con el texto que recibe se rige por su propia política de privacidad, no por esta. Puedes ver y cambiar el motor activo en Ajustes → Accesibilidad → Salida de síntesis de voz de Android. Si nunca usas la lectura en voz alta, no se entrega texto a ningún motor. La velocidad que elijas se guarda localmente (speech_rate); no se graba audio y no interviene el micrófono.

4. Qué no recoge la app

La app no solicita ni lee tu nombre, correo electrónico, teléfono, contactos, mensajes, calendario, ubicación ni ningún archivo fuera de los lugares descritos arriba. No tiene sistema de cuentas, ni inicio de sesión, ni sincronización en la nube, y no incluye SDK de analítica ni de informes de fallos. Aparte de las peticiones de los SDK de publicidad y facturación y de la descarga del modelo, la app no realiza peticiones de red propias.

Tres permisos no se solicitan de forma deliberada. Las bibliotecas de cámara y de compartir los añadirían por fusión, así que el manifiesto los elimina con tools:node="remove": RECORD_AUDIO (el micrófono; la cámara funciona con el audio desactivado), READ_EXTERNAL_STORAGE y WRITE_EXTERNAL_STORAGE (acceso al almacenamiento compartido heredado). No aparecen en el paquete instalado. La app tampoco solicita ningún permiso READ_MEDIA_*: el selector de fotos del sistema funciona sin él, así que la app nunca obtiene acceso a toda tu galería.

La versión 1.1.0 no añadió ningún permiso: el archivado escribe solo en el almacenamiento privado de la app, la exportación escribe en la caché propia de la app antes de que el menú de compartir tome el relevo, y la lectura en voz alta pasa por el servicio de voz del sistema. La lista de permisos del paquete instalado no ha cambiado.

5. Publicidad (Google AdMob) y consentimiento

La app muestra un banner y, de vez en cuando al terminar una acción, un anuncio intersticial a pantalla completa mediante el SDK de Google Mobile Ads. Para publicar y medir esos anuncios, Google puede tratar el identificador de publicidad del dispositivo (AD_ID), información aproximada del dispositivo y de la red, y eventos de interacción con los anuncios. Esto ocurre dentro del SDK de Google; el desarrollador no ve ni almacena esos datos, y no se le entrega ninguna imagen que escanees ni ningún texto que se reconozca en ella.

  • Tratamiento de datos por parte de Google: Cómo utiliza Google la información de sitios o aplicaciones que usan nuestros servicios y la Política de Privacidad de Google
  • En el EEE, el Reino Unido y Suiza la app muestra un mensaje de consentimiento certificado por Google (Google User Messaging Platform, UMP) antes de usar publicidad personalizada. Puedes volver a abrirlo en Ajustes → Configuración de privacidad y cambiar tu elección.
  • Puedes restablecer o eliminar el identificador de publicidad cuando quieras en Ajustes → Privacidad → Anuncios de Android. Al eliminarlo se detiene la publicidad personalizada en el dispositivo.

6. Compra sin anuncios

Una compra única dentro de la app (text_grab_premium) elimina los anuncios. El pago lo procesa por completo la Facturación de Google Play: el desarrollador nunca recibe tu número de tarjeta, tu dirección de facturación ni ningún otro dato de pago, y solo ve los informes de ventas agregados de Play. La app guarda localmente si la compra está activa para dejar de mostrar anuncios. La restauración de la compra en otro dispositivo la gestiona tu cuenta de Google Play.

7. Permisos

La app declara por sí misma android.permission.CAMERA (la cámara), com.google.android.gms.permission.AD_ID y com.android.vending.BILLING. Los demás los añaden automáticamente las bibliotecas que utiliza:

  • INTERNET, ACCESS_NETWORK_STATE, ACCESS_ADSERVICES_AD_ID / ATTRIBUTION / TOPICS — los añade el SDK de Google Mobile Ads para obtener y medir anuncios
  • com.android.vending.BILLING — la compra sin anuncios, gestionada por Google Play
  • El hardware de cámara se declara como característica con required="false" (tanto android.hardware.camera como android.hardware.camera.flash), de modo que una tableta sin cámara puede instalar la app y usar la vía del selector de fotos

8. Compartir, enlaces y exportar

El texto reconocido puede contener una dirección web, un número de teléfono o un correo electrónico. La app nunca los abre por su cuenta: una intención sale de la app solo cuando tú pulsas uno. Las entradas <queries> del manifiesto para VIEW (https), DIAL (tel) y SENDTO (mailto) existen únicamente para que Android 11 y posteriores permitan a la app comprobar que hay instalado un navegador, un marcador telefónico o una app de correo; sin ellas, tu pulsación fallaría en silencio.

Compartir pasa por el menú de compartir de Android: tú eliges la app que recibe el texto y esa app lo trata según su propia política. Ninguna de las dos rutas pasa por un servidor del desarrollador.

Exportar. Una extracción puede escribirse como archivo .txt o .pdf. El archivo se crea en el dispositivo —el PDF lo compone la propia app, sin ningún servicio externo— y se escribe en el directorio temporal (caché) de la app; después se entrega al menú de compartir para que tú elijas su destino. El texto que la fuente incorporada del PDF no puede representar se dibuja como página de imagen, también íntegramente en el dispositivo. Los archivos de la caché los recupera el sistema; la app no sube nada.

9. Copia de seguridad automática

El manifiesto no desactiva la copia de seguridad de Android (allowBackup="true"). Por comportamiento predeterminado, algunos datos locales pueden copiarse a la copia de seguridad de tu propia cuenta de Google. El desarrollador no puede acceder a ella ni controlarla. El alcance real depende del dispositivo, el fabricante y la versión de Android.

10. Conservación y borrado

Los ajustes permanecen hasta que los cambies. Las entradas del historial permanecen hasta que las borres, una a una o desactivando el historial en Ajustes, tras lo cual las extracciones dejan de guardarse. Borrar los datos de la app en los ajustes de Android, o desinstalarla, elimina todos los datos de la app. Como no se envía nada a ninguna parte, no hay ninguna otra copia que borrar.

Una foto de origen archivada dura exactamente lo que dure la entrada del historial a la que pertenece: al borrar la entrada se va con ella, y al desactivar el historial se borran todas las fotos archivadas junto con el historial. Los archivos exportados viven en la caché de la app hasta que el sistema los recupera, o allí donde los hayas enviado con el menú de compartir; esas copias las gestionas tú.

11. Menores

La app no está dirigida a menores y el desarrollador no recoge deliberadamente información personal de menores.

12. Cambios en esta política

Si cambian los permisos, los SDK o el tratamiento de datos de la app, se actualizarán esta página y su fecha.

13. Contacto

Preguntas sobre esta política:

  • Empresa: Nexperlab Co., Ltd.
  • Dirección: 2F, 21, Gangnam-daero 107-gil, Seocho-gu, Seoul, Republic of Korea
  • Correo: nexperlabmedia@gmail.com
Descripción factual comprobada con el manifiesto, las dependencias y el código fuente de la app. No es asesoramiento jurídico.