Textify

Overview/Purpose

Textify is a Kotlin-based application designed to convert visual content into editable text. With Textify, users can capture photos and transform them into text which can then be edited, customized, and shared. The app also provides functionality to convert previously captured images.

Suitable For:

  • Students: Capture and convert lecture notes or study materials.
  • Professionals: Transcribe meetings or presentations without manual transcription.
  • Journalists: Convert visual content into textual form for articles or reports.
  • Researchers: Convert printed resources or notes into digital text.
  • Everyday Users: Transform image-based information into text for various needs.

Special Note: Textify supports multiple languages, with a special focus on the Maori language. However, users might occasionally face issues with macron interpretation.

Development

Dependencies & Libraries

  • Firebase MLKit: Used for image-to-text conversion.
  • Camerax: Implemented in-app camera functionality.
  • RecyclerView: For the list view of saved images.

Resources & Learning

  • Googlecodelabs for Firebase MLKit.
  • Google documentation on Camerax and RecyclerView.
  • Online platforms, including Youtube, for tutorials on various features like language switch, backPress, and animations.
  • The application supports Android 12 and 13.

Technical Overview

  • Activities:

    • MainActivity
    • CameraActivity (No Action Bar)
    • EditVisionActivity
    • Preview
    • SavedImages
  • Android Sharesheet: Used for sharing text and image. (NOTE: There’s a known issue with sharing images alongside text for Facebook Messenger).

  • SavedImages Activity: Incorporates a RecyclerView to display previously saved images. Each image can be clicked to initiate the image-to-text conversion.

  • Widgets Used:

    • Buttons, Switch, TextView, RadioButton, PreviewView, EditText, ImageView, ScrollView, ProgressBar, CardView, FloatingActionButton.
  • Layouts: Combination of LinearLayout, ConstraintLayout, and FrameLayout.

  • Orientation: The app supports both portrait and landscape views. A separate layout resource is provided for the activity_main in both orientations.

  • Localization: Default string resources are provided in English, with Hindi as a second language. An in-app language switch is also provided, but it restricts changing the app’s language externally.

  • Feedback & Interactions:

    • Toast message on successful image capture.
    • DialogBoxes for language change, image processing, and image sharing.
  • Animations: Four animations xml files (slide_in_left, slide_in_right, slide_out_left, slide_out_right) housed under ‘anim’ and implemented throughout the app using a helper Animate class.

  • Image Handling: Utilized Glide for efficient image display in RecyclerView, ensuring smooth scrolling.

Gallery

Screenshot_20230815-114312 Screenshot_20230815-114337 Screenshot_20230815-114351 Screenshot_20230815-114403 Screenshot_20230815-114414 Screenshot_20230815-114433 Screenshot_20230815-114525 Screenshot_20230815-114546 Screenshot_20230815-114558 Screenshot_20230815-114609

License

Apache 2.0

Contributors

Prableen Oberoi

GitHub

View Github