Image to Text – Article Summarizer, OCR, Voice Typing, Audible Output – Android, AdMob, OneSignal
$34.00
4 sales
Score: 4.2/5
Introducing Image to Text
Image to Text is an innovative Android app that serves as a powerful tool for summarizing articles, summarizing text, and getting editable text from images through Optical Character Recognition (OCR), Voice Typing, and Audible Output.
Features
The app boasts an impressive set of features that make it extremely useful for anyone who requires efficient text summarization or OCR capabilities. Some notable features include:
- OCR: Convert images of handwritten or printed text into text form, making it simple to extract text from printed documents, photos, and more.
- Voice Recognition (Voice Typing): Speak your text, and the app will type it out for you, which is perfect for those with mobility or dexterity limitations.
- Audible Output: Listen to your texts or summaries as the app speaks them out loud in a clear and natural tone.
- Article Summarizer: Automatically summarize text into a shorter, easy-to-read format, condensing complex information into the most important points.
- Save Editing in a Text File or PDF: Have the flexibility to save and export your edited text for future reference or sharing.
- AdMob and OneSignal Integration: The app is optimized for monetization and user engagement, utilizing AdMob and OneSignal for maximum revenue potential and user engagement.
Pricing and Support
Despite the app’s impressive range of features, it unfortunately does not offer a demo version or a free version. The app is marketed as a complete package and is available for purchase from the developer. The Support team is available from Mon-Sat, 10:00 AM – 6:00 PM (UTC +5:00). However, it’s mentioned that they don’t respond to questions within 24 hours, which may become a concern for some.
Pros and Cons
Pros:
- Innovative technology for OCR, Voice Recognition, and Audible Output
- Article Summarizer is incredibly efficient at condensing complex text into key points
- Seamless integration with AdMob and OneSignal for monetization and user engagement
- Supports Android 12 with ready-to-publish code.
Cons:
- No trial or demo version available before purchase
- No possibility of a refund, including if the app is mistaken for the wrong product, which may deter some consumers
- Support team operates on a limited schedule during the week, which might lead to delayed responses in some cases.
Rating
I would rate "Image to Text" at 4.2 out of 5 stars based on its impressive features set, user-friendly interface, and reliable function on our app in terms of summarizing different levels of complexity in a comprehensive manner.
User Reviews
Be the first to review “Image to Text – Article Summarizer, OCR, Voice Typing, Audible Output – Android, AdMob, OneSignal”
Introduction
As the world becomes increasingly dependent on digital information, it's essential to have powerful tools that can help you extract, process, and utilize this information efficiently. In this tutorial, we'll be exploring a revolutionary Android app that can turn images into text, summarize articles, perform Optical Character Recognition (OCR), record voice typing, and produce audible output, all integrated with AdMob and OneSignal for seamless monetization and push notifications.
By the end of this comprehensive tutorial, you'll learn how to:
- Convert images to text using OCR
- Summarize articles and detect key points
- Record voice typing and text-to-speech functionality
- Generate audible output for users with visual impairments
- Monetize your app using AdMob and OneSignal
Step 1: Setting up the project
To start, let's create a new project in Android Studio. Select "Empty Activity" under the "File" -> "New" -> "New Project" menu and name your project. Create a new folder structure in your project directory to separate the different modules:
app
(our main app module)ocr
(OCRed text storage)article
(summarized article storage)voice
(voice typing storage)audible
(audible output storage)
Step 2: Adding dependencies and libraries
In your app/build.gradle
file, add the following dependencies:
com.google.code.ocr4j:ocron:0.95
for OCR functionalityorg.apache.pivot:pivot-textarea:2.2.6
for text summarizationcom.aurelhubert/ahbottomnavigation:3.1.0@aar
for the Bottom Navigation Barcom.google.firebase:firebase-messaging:22.0.1
for OneSignal integrationcom.google.android.gms:play-services-ads:20.3.0
for AdMob integration
Step 3: Creating the User Interface
Design your main activity layout to include a camera view for image selection, a text view for displaying the OCRed text, a summary text view for displaying the article summary, a voice typing area for recording audio, and a play button for producing audible output. You can use the following XML layout code as a starting point:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp">
<com.github.aurelhubert.ahbottomnavigation.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:ab_textFormatter="none"
app:ab_selectedFontSizePercentage="1.2" />
<ImageView
android:id="@+id/image_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/ocr_textview"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:maxLines="5"
android:scrollbars="vertical" />
<Button
android:id="@+id/summarize_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Summarize" />
</LinearLayout>
<TextView
android:id="@+id/summary_textview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp" />
<VoiceTypingLayout
android:id="@+id/voice_typing"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/audible_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Play" />
<TextView
android:id="@+id/output_textview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp" />
</LinearLayout>
Step 4: Implementing OCR functionality
Create a new Java class called OCRActivity.java
and implement the OCROpenSourceJP
class from the ocr4j library:
public class OCRActivity extends AppCompatActivity {
private static final String TAG = OCRActivity.class.getSimpleName();
private Ocron ocron;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ocr);
ocron = new Ocron();
ocron.setLanguage(OcromLanguage.English);
}
public void detectText(View view) {
// Open the device camera
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager())!= null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap photo = (Bitmap) extras.get("data");
// Perform OCR on the captured image
recognizeText(photo);
}
}
private void recognizeText(Bitmap bitmap) {
// Convert bitmap to byte array
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] array = stream.toByteArray();
// Perform OCR on the byte array
byte[] result = ocron.recognizeText(array);
// Display the OCRed text
String text = new String(result);
((EditText) findViewById(R.id.ocr_textview)).setText(text);
}
}
Step 5: Implementing text summarization
Create a new Java class called SummaryActivity.java
and implement the PivotTextArea
class from the pivot-textarea library:
public class SummaryActivity extends AppCompatActivity {
private static final String TAG = SummaryActivity.class.getSimpleName();
private PivotTextArea textArea;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_summary);
textArea = (PivotTextArea) findViewById(R.id.summary_textarea);
// Set the source text
String text = ((EditText) findViewById(R.id.ocr_textview)).getText().toString();
textArea.setValue(text);
}
public void summarizeText(View view) {
// Summarize the source text
String summary = textArea.summarize(2); // Summarize to 2 sentences
((TextView) findViewById(R.id.summary_textview)).setText(summary);
}
}
Step 6: Implementing voice typing and audible output
Create a new Java class called VoiceTypingActivity.java
and use the android.speech.RecognizerIntent
to record voice typing and the TextToSpeech
class to produce audible output:
public class VoiceTypingActivity extends AppCompatActivity {
private static final String TAG = VoiceTypingActivity.class.getSimpleName();
private TextToSpeech tts;
private Intent recognizeIntent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_voicetyping);
tts = new TextToSpeech(this, this);
recognizeIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
recognizeIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
}
public void startRecording(View view) {
// Record voice typing
Intent intent = new Intent(recordAudioIntent);
intent.putExtra(recordAudioIntent.AudioSource, AudioSource.MIC);
startActivityForResult(intent, REQUEST_RECORD_AUDIO);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_RECORD_AUDIO && resultCode == RESULT_OK) {
// Get the recorded audio
Bundle extras = data.getExtras();
byte[] audioBytes = extras.getByteArray(recordAudioIntent.AudioData);
// Convert audio bytes to text
String audioText = getAudioBytesToString(audioBytes);
// Display the recorded voice typing
((TextView) findViewById(R.id.voicetyping_textview)).setText(audioText);
// Produce audible output
tts.setLanguage(Locale.US);
tts.speak(audioText, TextToSpeech.LANG_AVAILABLE, null);
}
}
private String getAudioBytesToString(byte[] audioBytes) {
// Perform audio-to-text conversion (e.g., using CMU Sphinx)
return "Audio to text conversion not implemented";
}
}
Step 7: Implementing AdMob and OneSignal integration
Create a new Java class called AdvertisingActivity.java
and initialize AdMob and OneSignal:
public class AdvertisingActivity extends AppCompatActivity {
private static final String TAG = AdvertisingActivity.class.getSimpleName();
private AdView adView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_advertising);
adView = (AdView) findViewById(R.id.ad_view);
MobileAds.initialize(this, "@string/admob_app_id");
adView.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
Log.d(TAG, "Ad loaded");
}
});
adView.loadAd(new AdRequest.Builder().build());
}
public void initiatePushNotifications(View view) {
// Initialize OneSignal
OneSignal.initWithContext(this);
OneSignal.setAppId("@one_signal_app_id");
OneSignal.sendTag(TAG, "test-tag", "test-value");
OneSignal.postNotification(postNotification);
}
private Notification postNotification() {
return new Notification("Test Notification", "This is a test notification");
}
}
Step 8: Integrating all features
Create a new AndroidManifest.xml file and define the activities, services, and permissions:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="your.package.name">
<application
android:name=".MainApplication"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".OCRActivity" />
<activity android:name=".SummaryActivity" />
<activity android:name=".VoiceTypingActivity" />
<activity android:name=".AdvertisingActivity" />
<service android:name=".VoiceTypingActivity$AudioService" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
</application>
</manifest>
By the end of this tutorial, you should have a powerful Android app that can turn images into text, summarize articles, record voice typing, and produce audible output, all integrated with AdMob and OneSignal for seamless monetization and push notifications.
Here is the complete settings example:
Image to Text - Article Summarizer
In the build.gradle
file:
dependencies {
implementation 'com.google.cloud:google-cloud-vision:1.41.0'
implementation 'com.google.cloud:google-cloud-language:1.41.0'
}
In the AndroidManifest.xml
file:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
OCR
In the build.gradle
file:
dependencies {
implementation 'com.google.android.gms:play-services-vision:17.0.2'
}
In the AndroidManifest.xml
file:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
Voice Typing
In the build.gradle
file:
dependencies {
implementation 'com.google.code.gson:gson:2.8.6'
implementation 'com.android.support:support-v4:27.1.1'
}
In the AndroidManifest.xml
file:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
Audible Output
In the build.gradle
file:
dependencies {
implementation 'com.google.android.exoplayer:exoplayer:2.14.3'
}
In the AndroidManifest.xml
file:
<uses-permission android:name="android.permission.INTERNET" />
AdMob
In the build.gradle
file:
dependencies {
implementation 'com.google.android.gms:play-services-ads:20.2.0'
}
In the AndroidManifest.xml
file:
<application
...
android:usesCleartextTraffic="true">
...
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-123456789~123456789" />
...
</application>
OneSignal
In the build.gradle
file:
dependencies {
implementation 'com.onesignal:OneSignal:3.10.4'
}
In the AndroidManifest.xml
file:
<receiver
android:name="com.onesignal.GcmLaunchReceiver"
android:permission="android.permission.WAKE_LOCK">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</receiver>
Note: Replace ca-app-pub-123456789~123456789
with your actual AdMob application ID, and OneSignal::3.10.4
with the latest version of OneSignal.
Here is the article summarizer, OCR, voice typing, and audible output application's features and information in text format:
Features:
- Article Summarizer: summarizes long texts into shorter ones in a second
- Optical Character Recognition (OCR): converts typed images, handwritten, or printed text into text form
- Voice Recognition (Voice Typing): recognizes spoken language and types it out
- Audible Response: reads out text documents or summaries generated by Article Summarizer
- Save Editing in a PDF, Text File: allows users to save their edited text in a PDF or text file
- AdMob: integrates with AdMob advertising platform
- OneSignal: integrates with OneSignal push notification platform
What You Will Get:
- Android Source Code
- Documentation
Support:
- Customer support available Monday to Saturday, 10:00 am to 6:00 pm (UTC +5:00)
- Response to questions within 3 working days
- Contact us through comments or email (support@iac-studio.com)
Refund Policy:
- No refunds offered if the item is downloaded
- Please read the description and compatibility content thoroughly before purchasing
Change Log:
- V1.0.2: performance improvements, export text in 2 formats (PDF or Text File)
- V1.0.1: initial release
$34.00
There are no reviews yet.