Google இன் இயந்திர கற்றல் SDK உடன் படங்களிலிருந்து உரையை எவ்வாறு பிரித்தெடுப்பது

நூலாசிரியர்: John Stephens
உருவாக்கிய தேதி: 27 ஜனவரி 2021
புதுப்பிப்பு தேதி: 5 ஜூலை 2024
Anonim
EasyOCR பைதான் நூலகத்தைப் பயன்படுத்தி படங்களிலிருந்து உரையை எவ்வாறு பிரித்தெடுப்பது (ஆழமான கற்றல்)
காணொளி: EasyOCR பைதான் நூலகத்தைப் பயன்படுத்தி படங்களிலிருந்து உரையை எவ்வாறு பிரித்தெடுப்பது (ஆழமான கற்றல்)

உள்ளடக்கம்


மொழிபெயர்ப்பு பயன்பாடுகளுக்கான அடிப்படையாக உரை அங்கீகாரம் API ஐ நீங்கள் பயன்படுத்தலாம், அல்லது பயனர் தங்கள் கேமராவை அவர்கள் போராடும் எந்த உரையிலும் சுட்டிக்காட்டக்கூடிய அணுகல் சேவைகள் மற்றும் அதை அவர்களுக்கு உரக்கப் படிக்கலாம்.

இந்த டுடோரியலில், பயனரின் கேலரியில் உள்ள எந்தவொரு படத்திலிருந்தும் உரையை பிரித்தெடுக்கக்கூடிய பயன்பாட்டை உருவாக்குவதன் மூலம், பலவிதமான புதுமையான அம்சங்களுக்கான அடித்தளத்தை அமைப்போம். இந்த டுடோரியலில் நாங்கள் அதை மறைக்க மாட்டோம் என்றாலும், இந்த பயன்பாட்டை சாதனத்தின் கேமராவுடன் இணைப்பதன் மூலம் பயனரின் சூழலில் இருந்து உண்மையான நேரத்தில் உரையையும் கைப்பற்றலாம்.

சாதனத்தில் அல்லது மேகத்தில் இருக்கிறதா?

சில எம்.எல் கிட் ஏபிஐக்கள் சாதனத்தில் மட்டுமே கிடைக்கின்றன, ஆனால் சில சாதனத்திலும் கிளவுட்டிலும் கிடைக்கின்றன, இதில் உரை அங்கீகாரம் ஏபிஐ அடங்கும்.

மேகக்கணி சார்ந்த உரை API ஆனது பரந்த அளவிலான மொழிகள் மற்றும் எழுத்துக்களை அடையாளம் காண முடியும், மேலும் அதன் சாதனத்தின் எண்ணிக்கையை விட அதிக துல்லியத்தை உறுதிப்படுத்துகிறது. எனினும், அது செய்யும் செயலில் இணைய இணைப்பு தேவைப்படுகிறது, மேலும் இது பிளேஸ்-நிலை திட்டங்களுக்கு மட்டுமே கிடைக்கும்.


இந்த கட்டுரையில், நாங்கள் உரை அங்கீகார API ஐ உள்ளூரில் இயக்குவோம், எனவே நீங்கள் பிளேஸாக மேம்படுத்தப்பட்டீர்களா அல்லது இலவச ஃபயர்பேஸ் தீப்பொறி திட்டத்தில் இருக்கிறீர்களா என்பதைப் பொருட்படுத்தாமல் நீங்கள் பின்பற்றலாம்.

எம்.எல் கிட் மூலம் உரை அங்கீகார பயன்பாட்டை உருவாக்குதல்

உங்களுக்கு விருப்பமான அமைப்புகளுடன் ஒரு பயன்பாட்டை உருவாக்கவும், ஆனால் கேட்கும் போது “வெற்று செயல்பாடு” வார்ப்புருவைத் தேர்ந்தெடுக்கவும்.

எம்.எல் கிட் எஸ்.டி.கே ஃபயர்பேஸின் ஒரு பகுதியாகும், எனவே உங்கள் திட்டத்தை ஃபயர்பேஸுடன் இணைக்க வேண்டும், அதன் SHA-1 கையொப்ப சான்றிதழைப் பயன்படுத்தி. உங்கள் திட்டத்தின் SHA-1 ஐப் பெற:

  • Android ஸ்டுடியோவின் “Gradle” தாவலைத் தேர்ந்தெடுக்கவும்.
  • “கிரேடில் திட்டங்கள்” குழுவில், உங்கள் திட்டத்தின் “மூலத்தை” விரிவாக்க இருமுறை கிளிக் செய்து, பின்னர் “பணிகள்> Android> கையொப்பமிடும் அறிக்கை” என்பதைத் தேர்ந்தெடுக்கவும்.
  • Android ஸ்டுடியோ சாளரத்தின் அடிப்பகுதியில் உள்ள குழு இந்த திட்டத்தைப் பற்றிய சில தகவல்களைக் காண்பிக்க புதுப்பிக்க வேண்டும் - அதன் SHA-1 கையொப்பமிடல் சான்றிதழ் உட்பட.


உங்கள் திட்டத்தை ஃபயர்பேஸுடன் இணைக்க:

  • உங்கள் வலை உலாவியில், ஃபயர்பேஸ் கன்சோலைத் தொடங்கவும்.
  • “திட்டத்தைச் சேர்” என்பதைத் தேர்ந்தெடுக்கவும்.
  • உங்கள் திட்டத்திற்கு ஒரு பெயரைக் கொடுங்கள்; நான் “ML Test” ஐப் பயன்படுத்துகிறேன்.
  • விதிமுறைகளையும் நிபந்தனைகளையும் படியுங்கள், நீங்கள் தொடர மகிழ்ச்சியடைகிறீர்கள் என்றால் “நான் ஏற்றுக்கொள்கிறேன்…” என்பதைத் தொடர்ந்து “திட்டத்தை உருவாக்கு” ​​என்பதைத் தேர்ந்தெடுக்கவும்.
  • “உங்கள் Android பயன்பாட்டில் ஃபயர்பேஸைச் சேர்” என்பதைத் தேர்ந்தெடுக்கவும்.
  • உங்கள் திட்டத்தின் தொகுப்பு பெயரை உள்ளிடவும், அவை மெயின் ஆக்டிவிட்டி கோப்பின் மேலேயும், மேனிஃபெஸ்ட்டிலும் இருக்கும்.
  • உங்கள் திட்டத்தின் SHA-1 கையொப்பமிடல் சான்றிதழை உள்ளிடவும்.
  • “பதிவுசெய்த பயன்பாடு” என்பதைக் கிளிக் செய்க.
  • “Google-services.json ஐப் பதிவிறக்கு” ​​என்பதைத் தேர்ந்தெடுக்கவும். இந்த கோப்பில் ஏபிஐ விசை உட்பட உங்கள் திட்டத்திற்கு தேவையான அனைத்து ஃபயர்பேஸ் மெட்டாடேட்டாவும் உள்ளது.
  • Android ஸ்டுடியோவில், உங்கள் திட்டத்தின் “பயன்பாட்டு” கோப்பகத்தில் google-services.json கோப்பை இழுத்து விடுங்கள்.

  • உங்கள் திட்ட அளவிலான build.gradle கோப்பைத் திறந்து, Google சேவைகள் வகுப்புப்பாதையைச் சேர்க்கவும்:

classpath com.google.gms: google-services: 4.0.1

  • உங்கள் பயன்பாட்டு-நிலை build.gradle கோப்பைத் திறந்து, ஃபயர்பேஸ் கோர், ஃபயர்பேஸ் எம்.எல் விஷன் மற்றும் மாதிரி மொழிபெயர்ப்பாளர் மற்றும் கூகிள் சேவைகள் சொருகி ஆகியவற்றிற்கான சார்புகளைச் சேர்க்கவும்:

சொருகி விண்ணப்பிக்கவும்: com.google.gms.google-services ... ... ... சார்புகள் {செயல்படுத்தல் கோப்பு மரம் (dir: libs, include :) செயல்படுத்தல் com.google.firebase: firebase-core: 16.0.1 செயல்படுத்தல் com. google.firebase: firebase-ml-vision: 16.0.0 செயல்படுத்தல் com.google.firebase: ஃபயர்பேஸ்-மில்லி-மாதிரி-மொழிபெயர்ப்பாளர்: 16.0.0

இந்த கட்டத்தில், உங்கள் திட்டத்தை நீங்கள் இயக்க வேண்டும், இதனால் ஃபயர்பேஸ் சேவையகங்களுடன் இணைக்க முடியும்:

  • உங்கள் பயன்பாட்டை இயற்பியல் Android ஸ்மார்ட்போன் அல்லது டேப்லெட் அல்லது Android மெய்நிகர் சாதனம் (AVD) இல் நிறுவவும்.
  • ஃபயர்பேஸ் கன்சோலில், “நிறுவலைச் சரிபார்க்க பயன்பாட்டை இயக்கு” ​​என்பதைத் தேர்ந்தெடுக்கவும்.
  • சில தருணங்களுக்குப் பிறகு, நீங்கள் ஒரு “வாழ்த்துக்கள்” பார்க்க வேண்டும்; "கன்சோலுக்குத் தொடரவும்" என்பதைத் தேர்ந்தெடுக்கவும்.

Google இன் முன் பயிற்சி பெற்ற இயந்திர கற்றல் மாதிரிகளைப் பதிவிறக்கவும்

இயல்பாக, எம்.எல் கிட் மாதிரிகள் தேவைப்படும் போது மட்டுமே பதிவிறக்குகிறது, எனவே பயனர் முதன்முறையாக உரையை பிரித்தெடுக்க முயற்சிக்கும்போது எங்கள் பயன்பாடு OCR மாதிரியை பதிவிறக்கும்.

இது பயனர் அனுபவத்தில் எதிர்மறையான தாக்கத்தை ஏற்படுத்தக்கூடும் - ஒரு அம்சத்தை அணுக முயற்சிப்பதை கற்பனை செய்து பாருங்கள், இந்த அம்சத்தை உண்மையில் வழங்குவதற்கு முன்பு பயன்பாடு அதிக ஆதாரங்களை பதிவிறக்கம் செய்ய வேண்டும் என்பதைக் கண்டறிய மட்டுமே. மிக மோசமான சூழ்நிலையில், உங்கள் பயன்பாட்டிற்கு தேவையான ஆதாரங்களை பதிவிறக்கம் செய்ய முடியாமல் போகலாம், அவை தேவைப்படும்போது, ​​எடுத்துக்காட்டாக சாதனத்திற்கு இணைய இணைப்பு இல்லை என்றால்.

எங்கள் பயன்பாட்டில் இது நடக்காது என்பதை உறுதிப்படுத்த, தேவையான OCR மாதிரியை நிறுவல் நேரத்தில் பதிவிறக்கம் செய்யப் போகிறேன், இதற்கு மேனியஸ்ட்டில் சில மாற்றங்கள் தேவை.

எங்களிடம் மேனிஃபெஸ்ட் திறந்திருக்கும் போது, ​​நான் WRITE_EXTERNAL_STORAGE அனுமதியையும் சேர்க்கப் போகிறேன், அதை பின்னர் இந்த டுடோரியலில் பயன்படுத்துவோம்.

// WRITE_EXTERNAL_STORAGE அனுமதியைச் சேர்க்கவும் // // பின்வருவனவற்றைச் சேர்க்கவும் //

தளவமைப்பை உருவாக்குதல்

எளிதான விஷயங்களை வெளியேற்றுவோம், மேலும் இதில் ஒரு தளவமைப்பை உருவாக்குவோம்:

  • ஒரு படக் காட்சி. ஆரம்பத்தில், இது ஒரு ஒதுக்கிடத்தைக் காண்பிக்கும், ஆனால் பயனர் தங்கள் கேலரியில் இருந்து ஒரு படத்தைத் தேர்ந்தெடுத்ததும் இது புதுப்பிக்கப்படும்.
  • ஒரு பொத்தான், இது உரை பிரித்தெடுப்பைத் தூண்டுகிறது.
  • ஒரு உரைக்காட்சி, பிரித்தெடுக்கப்பட்ட உரையை நாங்கள் காண்பிப்போம்.
  • ஒரு உருள் பார்வை. பிரித்தெடுக்கப்பட்ட உரை திரையில் அழகாக பொருந்தும் என்பதற்கு எந்த உத்தரவாதமும் இல்லை என்பதால், நான் ஒரு ஸ்க்ரோல்வியூவுக்குள் உரைக்காட்சியை வைக்கப் போகிறேன்.

முடிக்கப்பட்ட செயல்பாடு_மெயின்.எக்ஸ்.எம்.எல் கோப்பு இங்கே:

இந்த தளவமைப்பு வரையக்கூடிய “ic_placeholder” ஐக் குறிக்கிறது, எனவே இதை இப்போது உருவாக்கலாம்:

  • Android ஸ்டுடியோ கருவிப்பட்டியிலிருந்து “கோப்பு> புதிய> பட சொத்து” என்பதைத் தேர்ந்தெடுக்கவும்.
  • “ஐகான் வகை” கீழ்தோன்றலைத் திறந்து “அதிரடிப் பட்டி மற்றும் தாவல் சின்னங்கள்” என்பதைத் தேர்ந்தெடுக்கவும்.
  • “கிளிப் ஆர்ட்” ரேடியோ பொத்தான் தேர்ந்தெடுக்கப்பட்டிருப்பதை உறுதிசெய்க.
  • “கிளிப் ஆர்ட்” பொத்தானைக் கிளிக் செய்க.
  • உங்கள் ஒதுக்கிடமாக நீங்கள் பயன்படுத்த விரும்பும் படத்தைத் தேர்ந்தெடுக்கவும்; நான் “புகைப்படங்களில் சேர்” என்பதைப் பயன்படுத்துகிறேன்.
  • “சரி” என்பதைக் கிளிக் செய்க.
  • “தீம்” கீழ்தோன்றலைத் திறந்து, “HOLO_LIGHT” ஐத் தேர்ந்தெடுக்கவும்.
  • “பெயர்,” புலத்தில், “ic_placeholder” ஐ உள்ளிடவும்.
  • “அடுத்து” என்பதைக் கிளிக் செய்க. தகவலைப் படியுங்கள், தொடர நீங்கள் மகிழ்ச்சியடைகிறீர்கள் என்றால் “முடி” என்பதைக் கிளிக் செய்க.

செயல் பட்டி சின்னங்கள்: கேலரி பயன்பாட்டைத் தொடங்குகிறது

அடுத்து, பயனரின் கேலரியைத் தொடங்கும் ஒரு செயல் பட்டை உருப்படியை நான் உருவாக்கப் போகிறேன், அவர்கள் படத்தைத் தேர்ந்தெடுக்க தயாராக உள்ளனர்.

"ரெஸ் / மெனு" கோப்பகத்தில் வாழும் மெனு ஆதார கோப்பில் உள்ள செயல் பட்டை ஐகான்களை நீங்கள் வரையறுக்கிறீர்கள். உங்கள் திட்டத்தில் இந்த கோப்பகம் இல்லை என்றால், நீங்கள் அதை உருவாக்க வேண்டும்:

  • உங்கள் திட்டத்தின் “ரெஸ்” கோப்பகத்தைக் கட்டுப்படுத்தி, “புதிய> Android வள அடைவு” என்பதைத் தேர்ந்தெடுக்கவும்.
  • “வள வகை” கீழ்தோன்றலைத் திறந்து “மெனு” என்பதைத் தேர்ந்தெடுக்கவும்.
  • “அடைவு பெயர்” தானாகவே “மெனு” க்கு புதுப்பிக்கப்பட வேண்டும், ஆனால் அது இல்லையென்றால் நீங்கள் அதை கைமுறையாக மறுபெயரிட வேண்டும்.
  • “சரி” என்பதைக் கிளிக் செய்க.

மெனு ஆதார கோப்பை உருவாக்க நீங்கள் இப்போது தயாராக உள்ளீர்கள்:

  • உங்கள் திட்டத்தின் “மெனு” கோப்பகத்தைக் கட்டுப்படுத்தி, “புதிய> மெனு வள கோப்பு” என்பதைத் தேர்ந்தெடுக்கவும்.
  • இந்த கோப்புக்கு “my_menu” என்று பெயரிடுங்கள்.
  • “சரி” என்பதைக் கிளிக் செய்க.
  • “My_menu.xml” கோப்பைத் திறந்து பின்வருவனவற்றைச் சேர்க்கவும்:

// ஒரு உருவாக்க ஒவ்வொரு செயலுக்கான உறுப்பு //

மெனு கோப்பு ஒரு “action_gallery” சரத்தைக் குறிக்கிறது, எனவே உங்கள் திட்டத்தின் res / values ​​/ string.xml கோப்பைத் திறந்து இந்த ஆதாரத்தை உருவாக்கவும். நான் இங்கே இருக்கும்போது, ​​இந்த திட்டம் முழுவதும் நாங்கள் பயன்படுத்தும் மற்ற சரங்களையும் வரையறுக்கிறேன்.

கேலரி இந்த பயன்பாடு உங்கள் சாதனத்தில் கோப்புகளை அணுக வேண்டும். உரை எதுவும் கிடைக்கவில்லை

அடுத்து, செயல் பட்டியின் “ic_gallery” ஐகானை உருவாக்க பட சொத்து ஸ்டுடியோவைப் பயன்படுத்தவும்:

  • “கோப்பு> புதிய> பட சொத்து” என்பதைத் தேர்ந்தெடுக்கவும்.
  • “ஐகான் வகை” கீழ்தோன்றலை “அதிரடி பட்டி மற்றும் தாவல் சின்னங்கள்” என அமைக்கவும்.
  • “கிளிப் ஆர்ட்” பொத்தானைக் கிளிக் செய்க.
  • இழுக்கக்கூடிய ஒன்றைத் தேர்வுசெய்க; நான் “படத்தை” பயன்படுத்துகிறேன்.
  • “சரி” என்பதைக் கிளிக் செய்க.
  • செயல் பட்டியில் இந்த ஐகான் தெளிவாகத் தெரியும் என்பதை உறுதிப்படுத்த, “தீம்” கீழ்தோன்றலைத் திறந்து “HOLO_DARK” ஐத் தேர்ந்தெடுக்கவும்.
  • இந்த ஐகானுக்கு “ic_gallery” என்று பெயரிடுங்கள்.
  • “அடுத்து” என்பதைக் கிளிக் செய்க, அதைத் தொடர்ந்து “முடித்தல்”.

அனுமதி கோரிக்கைகளை கையாளுதல் மற்றும் நிகழ்வுகளைக் கிளிக் செய்க

மெனுவை நிறுவுதல், செயல் பட்டி கிளிக் நிகழ்வுகளைக் கையாளுதல் மற்றும் சாதனத்தின் சேமிப்பகத்தை அணுகுவதைக் கோருதல் உள்ளிட்ட உரை அங்கீகார API உடன் நேரடியாக தொடர்புபடுத்தப்படாத அனைத்து பணிகளையும் நான் ஒரு தனி அடிப்படை செயல்பாட்டு வகுப்பில் செய்யப் போகிறேன்.

  • Android ஸ்டுடியோவின் கருவிப்பட்டியிலிருந்து “கோப்பு> புதிய> ஜாவா வகுப்பு” என்பதைத் தேர்ந்தெடுக்கவும்.
  • இந்த வகுப்பிற்கு “BaseActivity” என்று பெயரிடுங்கள்.
  • “சரி” என்பதைக் கிளிக் செய்க.
  • BaseActivity ஐத் திறந்து, பின்வருவனவற்றைச் சேர்க்கவும்:

android.app.Activity; android.support.v4.app.ActivityCompat ஐ இறக்குமதி செய்க; android.support.v7.app.ActionBar ஐ இறக்குமதி செய்க; android.support.v7.app.AlertDialog ஐ இறக்குமதி செய்க; android.support.v7.app.AppCompatActivity ஐ இறக்குமதி செய்க; android.os.Bundle ஐ இறக்குமதி செய்க; android.content.DialogInterface ஐ இறக்குமதி செய்க; android.content.Intent ஐ இறக்குமதி செய்க; இறக்குமதி android.Manifest; android.provider.MediaStore ஐ இறக்குமதி செய்க; android.view.Menu ஐ இறக்குமதி செய்க; android.view.MenuItem ஐ இறக்குமதி செய்க; android.content.pm.PackageManager ஐ இறக்குமதி செய்க; android.net.Uri ஐ இறக்குமதி செய்க; android.provider.Settings ஐ இறக்குமதி செய்க; android.support.annotation.NonNull ஐ இறக்குமதி செய்க; android.support.annotation.Nullable; இறக்குமதி java.io.File; பொது வகுப்பு அடிப்படை செயல்பாடு AppCompatActivity ஐ நீட்டிக்கிறது {பொது நிலையான இறுதி எண்ணாக WRITE_STORAGE = 100; பொது நிலையான இறுதி எண்ணாக SELECT_PHOTO = 102; பொது நிலையான இறுதி சரம் ACTION_BAR_TITLE = "செயல்_பார்_ தலைப்பு"; பொது கோப்பு புகைப்படம்; VerOverride பாதுகாக்கப்பட்ட வெற்றிடத்தை onCreate (ullaNullable Bundle saveInstanceState) {super.onCreate (saveInstanceState); அதிரடி பட்டி நடவடிக்கை = getSupportActionBar (); if (actionBar! = null) {actionBar.setDisplayHomeAsUpEnabled (உண்மை); actionBar.setTitle (getIntent () getStringExtra (ACTION_BAR_TITLE).); Public public public பொது பூலியன் onCreateOptionsMenu (பட்டி மெனு) {getMenuInflater (). பெருக்கி (R.menu.my_menu, மெனு); உண்மைக்குத் திரும்பு; Public public பொது பூலியன் onOptionsItemSelected (MenuItem உருப்படி) {சுவிட்ச் (item.getItemId ()) {// “கேலரி_அறிவு” தேர்ந்தெடுக்கப்பட்டால், ... // வழக்கு R.id.gallery_action: //...check WRITE_STORAGE அனுமதி // சோதனை அனுமதி (WRITE_STORAGE); உடைக்க; super return super.onOptionsItemSelected (உருப்படி); RequestRequestPermissionsResult (int requestCode, onNonNull string அனுமதி, onNonNull int grantResults) {super.onRequestPermissionsResult (requestCode, අවසරங்கள், grantResults); சுவிட்ச் (requestCode) {வழக்கு WRITE_STORAGE: // அனுமதி கோரிக்கை வழங்கப்பட்டால், ... // if (grantResults.length> 0 && grantResults == PackageManager.PERMISSION_GRANTED) {//..call selectPictures // selectPictures ( ); // அனுமதி கோரிக்கை மறுக்கப்பட்டால், ... //} else {//... “அனுமதி_ கோரிக்கை” சரம் // கோரிக்கை அனுமதி (இது, கோரிக்கை குறியீடு, R.string.permission_request); } இடைவெளி; Request} // அனுமதி கோரிக்கை உரையாடலைக் காண்பி // பொது நிலையான வெற்றிட கோரிக்கை அனுமதி (இறுதி செயல்பாட்டு செயல்பாடு, இறுதி எண்ணாக கோரிக்கை குறியீடு, எண்ணாக எம்.எஸ்.ஜி) {எச்சரிக்கை உரையாடல்.பில்டர் எச்சரிக்கை = புதிய எச்சரிக்கை உரையாடல்.பில்டர் (செயல்பாடு); alert.set (சேதி); alert.setPositiveButton (android.R.string.ok, new DialogInterface.OnClickListener () public public பொது வெற்றிடத்தை onClick (DialogInterface dialogInterface, int i) .setData (Uri.parse ("தொகுப்பு:" + activity.getPackageName ()); activity.startActivityForResult (permissonIntent, requestCode);}}); alert.setNegativeButton (android.R.string.cancel, new DialogInterface.OnClickListener () public public பொது வெற்றிடத்தை onClick (DialogInterface dialogInterface, int i) {dialogInterface.dismiss ();}}); alert.setCancelable (தவறான); alert.show (); } // பயனர் WRITE_STORAGE அனுமதியை வழங்கியிருக்கிறாரா என்பதைச் சரிபார்க்கவும் // பொது வெற்றிடச் சரிபார்ப்பு அனுமதி (முழு வேண்டுகோள் குறியீடு) {சுவிட்ச் (கோரிக்கைக் குறியீடு) {வழக்கு WRITE_STORAGE: int hasWriteExternalStoragePermission = ActivityCompat.checkSelfPermission (இது, Manifest.permission.WRITE_ST) // வெளிப்புற சேமிப்பகத்திற்கான அணுகல் எங்களிடம் இருந்தால் ... // if (hasWriteExternalStoragePermission == PackageManager.PERMISSION_GRANTED) {//...call selectPictures, இது ஒரு செயலைத் தொடங்குகிறது, அங்கு பயனர் ஒரு படத்தைத் தேர்ந்தெடுக்க முடியும் // selectPictures (); // அனுமதி வழங்கப்படவில்லை என்றால், ... //} else {//... அனுமதியைக் கோருங்கள் // ActivityCompat.requestPermissions (இது, புதிய சரம் {Manifest.permission.WRITE_EXTERNAL_STORAGE request, requestCode); } இடைவெளி; v} தனிப்பட்ட வெற்றிடத் தேர்வு படம் () {புகைப்படம் = MyHelper.createTempFile (புகைப்படம்); நோக்கம் நோக்கம் = புதிய நோக்கம் (Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); // பயனர் ஒரு படத்தைத் தேர்வுசெய்யக்கூடிய ஒரு செயல்பாட்டைத் தொடங்குங்கள் // startActivityForResult (நோக்கம், SELECT_PHOTO); }}

இந்த கட்டத்தில், உங்கள் திட்டம் MyHelper.createTempFile ஐ தீர்க்க முடியாது என்று புகார் அளிக்க வேண்டும். இதை இப்போது செயல்படுத்தலாம்!

CreateTempFile உடன் படங்களை மறுஅளவிடுதல்

புதிய “மைஹெல்பர்” வகுப்பை உருவாக்கவும். இந்த வகுப்பில், பயனரின் தேர்ந்தெடுக்கப்பட்ட படத்தை மறுஅளவாக்குவோம், உரை அங்கீகாரம் API ஆல் செயலாக்க தயாராக உள்ளது.

android.graphics.Bitmap ஐ இறக்குமதி செய்க; android.graphics.BitmapFactory ஐ இறக்குமதி செய்க; android.content.Context ஐ இறக்குமதி செய்க; android.database.Cursor ஐ இறக்குமதி செய்க; android.os.En Environment; android.widget.ImageView ஐ இறக்குமதி செய்க; android.provider.MediaStore ஐ இறக்குமதி செய்க; android.net.Uri ஐ இறக்குமதி செய்க; நிலையான android.graphics.BitmapFactory.decodeFile ஐ இறக்குமதி செய்க; நிலையான android.graphics.BitmapFactory.decodeStream ஐ இறக்குமதி செய்க; இறக்குமதி java.io.File; இறக்குமதி java.io.FileNotFoundException; இறக்குமதி java.io.FileOutputStream; இறக்குமதி java.io.IOException; பொது வகுப்பு மைஹெல்பர் {பொது நிலையான சரம் கெட் பாத் (சூழல் சூழல், யூரி யூரி) {சரம் பாதை = ""; சரம் திட்டம் = {MediaStore.Images.Media.DATA}; கர்சர் கர்சர் = context.getContentResolver (). வினவல் (யூரி, ப்ரொஜெக்ஷன், பூஜ்ய, பூஜ்ய, பூஜ்ய); int column_index; if (கர்சர்! = பூஜ்யம்) {column_index = cursor.getColumnIndexOrThrow (MediaStore.Images.Media.DATA); cursor.moveToFirst (); path = cursor.getString (column_index); cursor.close (); } திரும்பும் பாதை; } பொது நிலையான கோப்பு createTempFile (கோப்பு கோப்பு) {கோப்பு அடைவு = புதிய கோப்பு (Environment.getExternalStorageDirectory (). getPath () + "/com.jessicathornsby.myapplication"); if (! directory.exists () ||! directory.isDirectory ()) {directory.mkdirs (); } if (கோப்பு == பூஜ்யம்) {கோப்பு = புதிய கோப்பு (அடைவு, "orig.jpg"); } திரும்ப கோப்பு; } பொது நிலையான பிட்மேப் மறுஅளவிடுதல் புகைப்படம் (கோப்பு படக் கோப்பு, சூழல் சூழல், யூரி யூரி, படக் காட்சி) {பிட்மேப்ஃபாக்டரி.ஆப்ஷன்ஸ் புதிய விருப்பங்கள் = புதிய பிட்மாப்ஃபாக்டரி.ஆப்ஷன்ஸ் (); {decodeStream ஐ முயற்சிக்கவும் (context.getContentResolver (). openInputStream (uri), பூஜ்ய, புதிய விருப்பங்கள்); int photoHeight = newOptions.outHeight; int photoWidth = newOptions.outWidth; newOptions.inSampleSize = Math.min (photoWidth / view.getWidth (), photoHeight / view.getHeight ()); return compressPhoto (imageFile, BitmapFactory.decodeStream (context.getContentResolver (). openInputStream (uri), null, newOptions)); } பிடிக்கவும் (FileNotFoundException விதிவிலக்கு) {exception.printStackTrace (); பூஜ்யமாகத் திரும்பு; stat} பொது நிலையான பிட்மேப் மறுஅளவிடுதல் புகைப்படம் (கோப்பு படக் கோப்பு, சரம் பாதை, படக் காட்சி) {பிட்மாப்ஃபாக்டரி.ஆப்ஷன்ஸ் விருப்பங்கள் = புதிய பிட்மேப்ஃபாக்டரி.ஆப்ஷன்ஸ் (); decodeFile (பாதை, விருப்பங்கள்); int photoHeight = options.outHeight; int photoWidth = options.outWidth; options.inSampleSize = Math.min (photoWidth / view.getWidth (), photoHeight / view.getHeight ()); return compressPhoto (imageFile, BitmapFactory.decodeFile (பாதை, விருப்பங்கள்)); stat தனியார் நிலையான பிட்மேப் அமுக்க புகைப்படம் (கோப்பு புகைப்பட கோப்பு, பிட்மேப் பிட்மேப்) {முயற்சிக்கவும் {FileOutputStream fOutput = புதிய FileOutputStream (photoFile); bitmap.compress (Bitmap.CompressFormat.JPEG, 70, fOutput); fOutput.close (); } பிடிக்கவும் (IOException விதிவிலக்கு) {exception.printStackTrace (); } திரும்ப பிட்மேப்; }}

படத்தை ஒரு படக் காட்சிக்கு அமைக்கவும்

அடுத்து, எங்கள் மெயின் ஆக்டிவிட்டி வகுப்பில் onActivityResult () ஐ செயல்படுத்த வேண்டும், மேலும் பயனரின் தேர்ந்தெடுக்கப்பட்ட படத்தை எங்கள் படக் காட்சியில் அமைக்கவும்.

android.graphics.Bitmap ஐ இறக்குமதி செய்க; android.os.Bundle ஐ இறக்குமதி செய்க; android.widget.ImageView ஐ இறக்குமதி செய்க; android.content.Intent ஐ இறக்குமதி செய்க; android.widget.TextView ஐ இறக்குமதி செய்க; android.net.Uri ஐ இறக்குமதி செய்க; பொது வகுப்பு மெயின் ஆக்டிவிட்டி பேஸ்ஆக்டிவிட்டி {தனியார் பிட்மேப் மை பிட்மேப்; தனிப்பட்ட படக் காட்சி myImageView; தனிப்பட்ட உரைக்காட்சி myTextView; VerOverride பாதுகாக்கப்பட்ட வெற்றிடத்தை onCreate (Bundle saveInstanceState) {super.onCreate (saveInstanceState); setContentView (R.layout.activity_main); myTextView = findViewById (R.id.textView); myImageView = findViewById (R.id.imageView); Activity செயல்பாட்டின் விளைவாக பாதுகாக்கப்பட்ட வெற்றிடத்தை மீறு (int requestCode, int resultCode, Intent data) {super.onActivityResult (requestCode, resultCode, data); if (resultCode == RESULT_OK) {சுவிட்ச் (requestCode) {வழக்கு WRITE_STORAGE: checkPermission (requestCode); உடைக்க; வழக்கு SELECT_PHOTO: யூரி டேட்டா யூரி = டேட்டா.ஜெட் டேட்டா (); சரம் பாதை = MyHelper.getPath (இது, dataUri); if (path == null) {myBitmap = MyHelper.resizePhoto (புகைப்படம், இது, டேட்டா யூரி, myImageView); } else {myBitmap = MyHelper.resizePhoto (புகைப்படம், பாதை, myImageView); } if (myBitmap! = null) {myTextView.setText (பூஜ்யம்); myImageView.setImageBitmap (myBitmap); } இடைவெளி; }}}}

இந்த திட்டத்தை இயற்பியல் Android சாதனம் அல்லது AVD இல் இயக்கவும், மேலும் செயல் பட்டி ஐகானைக் கிளிக் செய்யவும். கேட்கும் போது, ​​WRITE_STORAGE அனுமதி வழங்கவும், கேலரியில் இருந்து ஒரு படத்தைத் தேர்வு செய்யவும்; இந்த படம் இப்போது உங்கள் பயன்பாட்டின் UI இல் காட்டப்படும்.

இப்போது நாங்கள் அதற்கான அடித்தளத்தை அமைத்துள்ளோம், சில உரையை பிரித்தெடுக்கத் தயாராக உள்ளோம்!

உரையை அங்கீகரிக்க பயன்பாட்டைக் கற்பித்தல்

ஒரு கிளிக் நிகழ்வுக்கு பதிலளிக்கும் விதமாக உரை அங்கீகாரத்தைத் தூண்ட விரும்புகிறேன், எனவே நாங்கள் ஒரு OnClickListener ஐ செயல்படுத்த வேண்டும்:

android.graphics.Bitmap ஐ இறக்குமதி செய்க; android.os.Bundle ஐ இறக்குமதி செய்க; android.widget.ImageView ஐ இறக்குமதி செய்க; android.content.Intent ஐ இறக்குமதி செய்க; android.widget.TextView ஐ இறக்குமதி செய்க; android.view.View ஐ இறக்குமதி செய்க; android.net.Uri ஐ இறக்குமதி செய்க; பொது வகுப்பு மெயின்ஆக்டிவிட்டி பேஸ்ஆக்டிவிட்டி கருவிகளை விரிவாக்குகிறது View.OnClickListener {private Bitmap myBitmap; தனிப்பட்ட படக் காட்சி myImageView; தனிப்பட்ட உரைக்காட்சி myTextView; VerOverride பாதுகாக்கப்பட்ட வெற்றிடத்தை onCreate (Bundle saveInstanceState) {super.onCreate (saveInstanceState); setContentView (R.layout.activity_main); myTextView = findViewById (R.id.textView); myImageView = findViewById (R.id.imageView); findViewById (R.id.checkText) .setOnClickListener (இந்த); Public public பொது வெற்றிடத்தை onClick (பார்வை காண்க) {சுவிட்ச் (view.getId ()) {வழக்கு R.id.checkText: if (myBitmap! = Null) {// அடுத்த கட்டத்தில் // runTextRecog ஐ செயல்படுத்துவோம் // runTextRecog (); } இடைவெளி; }}

எம்.எல் கிட் படங்களை ஃபயர்பேஸ்விஷன்இமேஜ் வடிவமைப்பில் இருக்கும்போது மட்டுமே செயலாக்க முடியும், எனவே எங்கள் படத்தை ஃபயர்பேஸ்விஷன்இமேஜ் பொருளாக மாற்ற வேண்டும். நீங்கள் ஒரு பிட்மேப், மீடியாவிலிருந்து ஃபயர்பேஸ்விஷன்இமேஜ் உருவாக்கலாம்.இமேஜ், பைட் பஃபர் அல்லது பைட் வரிசையிலிருந்து. நாங்கள் பிட்மேப்களுடன் பணிபுரிவதால், ஃபயர்பேஸ்விஷன்இமேஜ் வகுப்பின் பிட்மேப் () பயன்பாட்டு முறையை அழைக்க வேண்டும், அதை எங்கள் பிட்மேப்பை அனுப்ப வேண்டும்.

private void runTextRecog () {FirebaseVisionImage image = FirebaseVisionImage.fromBitmap (myBitmap);

எம்.எல் கிட் அதன் ஒவ்வொரு பட அங்கீகார நடவடிக்கைகளுக்கும் வெவ்வேறு கண்டறிதல் வகுப்புகளைக் கொண்டுள்ளது. உரையைப் பொறுத்தவரை, ஃபயர்பேஸ்விஷன் டெக்ஸ்ட்டெக்டர் வகுப்பைப் பயன்படுத்த வேண்டும், இது ஒரு படத்தில் ஆப்டிகல் கேரக்டர் ரெக்னிகேஷன் (OCR) செய்கிறது.

GetVisionTextDetector ஐப் பயன்படுத்தி FirebaseVisionTextDetector இன் ஒரு உதாரணத்தை நாங்கள் உருவாக்குகிறோம்:

FirebaseVisionTextDetector Detector = FirebaseVision.getInstance (). GetVisionTextDetector ();

அடுத்து, டிடெக்ட்இன்இமேஜ் () முறையை அழைத்து ஃபயர்பேஸ்விஷன்இமேஜ் பொருளை அனுப்புவதன் மூலம், உரைக்கான ஃபயர்பேஸ்விஷன்இமேஜ் சரிபார்க்க வேண்டும். OnSuccess மற்றும் onFailure கால்பேக்குகளையும், அதனுடன் தொடர்புடைய கேட்பவர்களையும் நாங்கள் செயல்படுத்த வேண்டும், எனவே முடிவுகள் கிடைக்கும்போதெல்லாம் எங்கள் பயன்பாடு அறிவிக்கப்படும்.

detter.detectInImage (படம்) .addOnSuccessListener (புதிய OnSuccessListener() Ver ver ஓவர்ரைடு // செய்ய //}}). AddOnFailureListener (புதிய OnFailureListener () public public பொது வெற்றிடத்தை onFailure (onNonNull விதிவிலக்கு விதிவிலக்கு) {// விதிவிலக்குடன் பணி தோல்வியுற்றது //}}); }

இந்த செயல்பாடு தோல்வியுற்றால், நான் ஒரு சிற்றுண்டியைக் காண்பிக்கப் போகிறேன், ஆனால் செயல்பாடு வெற்றிகரமாக இருந்தால், பதிலுடன் செயலாக்க எக்ஸ்ட்ராக்ட் டெக்ஸ்ட் என்று அழைக்கிறேன்.

இந்த கட்டத்தில், எனது உரை கண்டறிதல் குறியீடு இதுபோல் தெரிகிறது:

// ஒரு ஃபயர்பேஸ்விஷன்இமேஜ் உருவாக்கவும் // தனியார் வெற்றிட ரன் டெக்ஸ்ட்ரெகாக் () {ஃபயர்பேஸ்விஷன்இமேஜ் படம் = ஃபயர்பேஸ்விஷன்இமேஜ்.பிரோம் பிட்மேப் (மைபிட்மேப்); // FirebaseVisionCloudTextDetector இன் ஒரு நிகழ்வை உருவாக்கவும் // FirebaseVisionTextDetector Detector = FirebaseVision.getInstance (). GetVisionTextDetector (); // ஒரு OnSuccessListener ஐ பதிவுசெய்க // detter.detectInImage (படம்) .addOnSuccessListener (புதிய OnSuccessListener() Ver ver ஓவர்ரைடு // onSuccess கால்பேக்கை செயல்படுத்தவும் // பொது வெற்றிடத்தை onSuccess (FirebaseVisionText நூல்கள்) {// அழைப்பு செயல்முறை எக்ஸ்ட்ராக்ட் செய்யப்பட்ட உரை பதிலுடன் // processExtractedText (உரைகள்); OO}. );}}); }

எங்கள் பயன்பாடு onSuccess அறிவிப்பைப் பெறும்போதெல்லாம், நாங்கள் முடிவுகளை அலச வேண்டும்.

ஒரு ஃபயர்பேஸ்விஷன் டெக்ஸ்ட் பொருள் கூறுகள், கோடுகள் மற்றும் தொகுதிகள் ஆகியவற்றைக் கொண்டிருக்கலாம், அங்கு ஒவ்வொரு தொகுதியும் பொதுவாக உரையின் ஒற்றை பத்திக்கு சமம். ஃபயர்பேஸ்விஷன் டெக்ஸ்ட் 0 தொகுதிகளைத் திருப்பினால், நாங்கள் “no_text” சரத்தைக் காண்பிப்போம், ஆனால் அதில் ஒன்று அல்லது அதற்கு மேற்பட்ட தொகுதிகள் இருந்தால், மீட்டெடுக்கப்பட்ட உரையை எங்கள் உரைக்காட்சியின் ஒரு பகுதியாக காண்பிப்போம்.

private void processExtractedText (FirebaseVisionText firebaseVisionText) {myTextView.setText (பூஜ்யம்); if (firebaseVisionText.getBlocks (). அளவு () == 0) {myTextView.setText (R.string.no_text); திரும்ப; } for (FirebaseVisionText.Block block: firebaseVisionText.getBlocks ()) {myTextView.append (block.getText ()); }}}

பூர்த்தி செய்யப்பட்ட முதன்மை செயல்பாட்டுக் குறியீடு இங்கே:

android.graphics.Bitmap ஐ இறக்குமதி செய்க; android.os.Bundle ஐ இறக்குமதி செய்க; android.widget.ImageView ஐ இறக்குமதி செய்க; android.content.Intent ஐ இறக்குமதி செய்க; android.widget.TextView ஐ இறக்குமதி செய்க; android.widget.Toast ஐ இறக்குமதி செய்க; android.view.View ஐ இறக்குமதி செய்க; android.net.Uri ஐ இறக்குமதி செய்க; android.support.annotation.NonNull ஐ இறக்குமதி செய்க; com.google.firebase.ml.vision.common.FirebaseVisionImage ஐ இறக்குமதி செய்க; com.google.firebase.ml.vision.text.FirebaseVisionText ஐ இறக்குமதி செய்க; com.google.firebase.ml.vision.text.FirebaseVisionTextDetector ஐ இறக்குமதி செய்க; இறக்குமதி com.google.firebase.ml.vision.FirebaseVision; com.google.android.gms.tasks.OnSuccessListener ஐ இறக்குமதி செய்க; com.google.android.gms.tasks.OnFailureListener ஐ இறக்குமதி செய்க; பொது வகுப்பு மெயின்ஆக்டிவிட்டி பேஸ்ஆக்டிவிட்டி கருவிகளை விரிவாக்குகிறது View.OnClickListener {private Bitmap myBitmap; தனிப்பட்ட படக் காட்சி myImageView; தனிப்பட்ட உரைக்காட்சி myTextView; VerOverride பாதுகாக்கப்பட்ட வெற்றிடத்தை onCreate (Bundle saveInstanceState) {super.onCreate (saveInstanceState); setContentView (R.layout.activity_main); myTextView = findViewById (R.id.textView); myImageView = findViewById (R.id.imageView); findViewById (R.id.checkText) .setOnClickListener (இந்த); Public public பொது வெற்றிடத்தை onClick (பார்வை காண்க) {சுவிட்ச் (view.getId ()) {வழக்கு R.id.checkText: if (myBitmap! = Null) {runTextRecog (); } இடைவெளி; Activity verOverride பாதுகாக்கப்பட்ட வெற்றிடத்தை onActivityResult (int requestCode, int resultCode, Intent data) {super.onActivityResult (requestCode, resultCode, data); if (resultCode == RESULT_OK) {சுவிட்ச் (requestCode) {வழக்கு WRITE_STORAGE: checkPermission (requestCode); உடைக்க; வழக்கு SELECT_PHOTO: யூரி டேட்டா யூரி = டேட்டா.ஜெட் டேட்டா (); சரம் பாதை = MyHelper.getPath (இது, dataUri); if (path == null) {myBitmap = MyHelper.resizePhoto (புகைப்படம், இது, டேட்டா யூரி, myImageView); } else {myBitmap = MyHelper.resizePhoto (புகைப்படம், பாதை, myImageView); } if (myBitmap! = null) {myTextView.setText (பூஜ்யம்); myImageView.setImageBitmap (myBitmap); } இடைவெளி; v}} தனியார் வெற்றிட ரன் டெக்ஸ்ட்ரெகோக் () {ஃபயர்பேஸ்விஷன்இமேஜ் படம் = ஃபயர்பேஸ்விஷன்இமேஜ்.பிரோம் பிட்மேப் (மைபிட்மேப்); FirebaseVisionTextDetector Detector = FirebaseVision.getInstance (). GetVisionTextDetector (); detter.detectInImage (படம்) .addOnSuccessListener (புதிய OnSuccessListener() Public public வெற்றிடத்தை மீறுதல் (ஃபயர்பேஸ்விஷன் டெக்ஸ்ட் நூல்கள்) {processExtractedText (நூல்கள்); }}). addOnFailureListener (புதிய OnFailureListener () public public பொது வெற்றிடத்தை முடக்கு v தனியார் வெற்றிட செயல்முறை எக்ஸ்ட்ராக்ட் டெக்ஸ்ட் (ஃபயர்பேஸ்விஷன் டெக்ஸ்ட் ஃபயர்பேஸ்விஷன் டெக்ஸ்ட்) {myTextView.setText (பூஜ்யம்); if (firebaseVisionText.getBlocks (). அளவு () == 0) {myTextView.setText (R.string.no_text); திரும்ப; } for (FirebaseVisionText.Block block: firebaseVisionText.getBlocks ()) {myTextView.append (block.getText ()); }}}

திட்டத்தை சோதிக்கிறது

எம்.எல் கிட்டின் உரை அங்கீகாரம் செயல்பாட்டில் இருப்பதற்கான நேரம் இது! இந்த திட்டத்தை Android சாதனம் அல்லது AVD இல் நிறுவவும், கேலரியில் இருந்து ஒரு படத்தைத் தேர்வுசெய்து, பின்னர் “உரையைச் சரிபார்க்கவும்” பொத்தானைத் தட்டவும். பயன்பாடானது படத்திலிருந்து அனைத்து உரையையும் பிரித்தெடுத்து, பின்னர் அதை உரைக்காட்சியில் காண்பிப்பதன் மூலம் பதிலளிக்க வேண்டும்.

உங்கள் படத்தின் அளவு மற்றும் அதில் உள்ள உரையின் அளவைப் பொறுத்து, பிரித்தெடுக்கப்பட்ட அனைத்து உரையையும் காண நீங்கள் உருட்ட வேண்டியிருக்கும் என்பதை நினைவில் கொள்க.

பூர்த்தி செய்யப்பட்ட திட்டத்தை கிட்ஹப்பிலிருந்து பதிவிறக்கம் செய்யலாம்.

மடக்குதல்

எம்.எல் கிட்டைப் பயன்படுத்தி ஒரு படத்திலிருந்து உரையை எவ்வாறு கண்டறிவது மற்றும் பிரித்தெடுப்பது என்பது இப்போது உங்களுக்குத் தெரியும்.

உரை அங்கீகாரம் API என்பது எம்.எல் கிட்டின் ஒரு பகுதியாகும். இந்த எஸ்.டி.கே பார்கோடு ஸ்கேனிங், முகம் கண்டறிதல், பட லேபிளிங் மற்றும் மைல்கல் அங்கீகாரம் ஆகியவற்றை வழங்குகிறது, ஸ்மார்ட் பதில் மற்றும் அதிக அடர்த்தி கொண்ட முகம் விளிம்பு ஏபிஐ உள்ளிட்ட பொதுவான மொபைல் பயன்பாட்டு நிகழ்வுகளுக்கு கூடுதல் ஏபிஐகளை சேர்க்க திட்டமிட்டுள்ளது.

எந்த எம்.எல் கிட் ஏபிஐ முயற்சிக்க நீங்கள் மிகவும் ஆர்வமாக உள்ளீர்கள்? கீழே உள்ள கருத்துகளில் எங்களுக்குத் தெரியப்படுத்துங்கள்!

இங்கே, எங்களுக்கு ஒரு மாறுபட்ட ஊழியர்கள் உள்ளனர். நாங்கள் உலகம் முழுவதிலுமிருந்து வருகிறோம், எல்லா வகையான தொழில்நுட்பங்களையும் பயன்படுத்துகிறோம். இந்த பணியாளர்கள் தேர்வுத் தொடர், வேலை, விளையாட்டு மற்ற...

Google Chromecat ஒரு வெளிப்படையான தேர்வாகும். இது உங்கள் டிவியின் பின்புறத்தில் நேரடியாக இணைக்கிறது, அது எல்லா நேரங்களிலும் பார்வையில் இருந்து மறைக்கப்படுகிறது. இது எப்போதும் எனக்கு வேலை செய்யும் ஒரு ...

இன்று சுவாரசியமான