|
1 | 1 | import uploadImage from '../lib/uploadImage.js'
|
2 | 2 | import ocrapi from 'ocr-space-api-wrapper'
|
3 | 3 | const { MessageType } = (await import('@adiwajshing/baileys')).default
|
4 |
| -let handler = async (m, { conn, text }) => { |
5 |
| - let q = m.quoted ? m.quoted : m |
| 4 | + |
| 5 | +async function performOCR(url) { |
| 6 | + try { |
| 7 | + return await ocrapi.ocrSpace(url) |
| 8 | + } catch (error) { |
| 9 | + console.error(error) |
| 10 | + return null |
| 11 | + } |
| 12 | +} |
| 13 | + |
| 14 | +let handler = async (m, { conn, text, command, usedPrefix }) => { |
| 15 | + try { |
| 16 | + let q = m.quoted ? m.quoted : m |
6 | 17 | let mime = (q.msg || q).mimetype || ''
|
7 |
| - if (!mime) throw `balas gambar dengan perintah .ocr` |
8 |
| - if (!/image\/(jpe?g|png)/.test(mime)) throw `_*jenis ${mime} tidak didukung!*_` |
| 18 | + |
| 19 | + if (!mime) throw `Balas gambar dengan perintah ${usedPrefix}${command}` |
| 20 | + if (!/image\/(jpe?g|png)/.test(mime)) throw `Jenis ${mime} tidak didukung` |
| 21 | + |
9 | 22 | let img = await q.download()
|
10 | 23 | let url = await uploadImage(img)
|
11 |
| - let hasil = await ocrapi.ocrSpace(url) |
12 |
| - await m.reply(hasil.ParsedResults[0].ParsedText) |
| 24 | + |
| 25 | + m.reply('tunggu sebentar...') |
| 26 | + |
| 27 | + let maxRetries = 99 |
| 28 | + let retryCount = 0 |
| 29 | + let hasil |
| 30 | + |
| 31 | + do { |
| 32 | + hasil = await performOCR(url) |
| 33 | + retryCount++ |
| 34 | + } while (!hasil && retryCount < maxRetries) |
| 35 | + |
| 36 | + if (hasil && hasil.ParsedResults && hasil.ParsedResults.length > 0) { |
| 37 | + |
| 38 | + let parsedText = hasil.ParsedResults[0].ParsedText; |
| 39 | + |
| 40 | + await m.reply(`${parsedText}`); |
| 41 | + |
| 42 | + } else { |
| 43 | + throw 'Tidak dapat menemukan teks dalam gambar' |
| 44 | + } |
| 45 | + } catch (error) { |
| 46 | + console.error(error) |
| 47 | + m.reply('Terjadi kesalahan dalam melakukan OCR') |
| 48 | + } |
13 | 49 | }
|
14 | 50 |
|
15 |
| -handler.help = ['ocr', 'totext'] |
| 51 | +handler.help = ['ocr', 'totext','keteks', 'ketext', 'ketulisan'] |
16 | 52 | handler.tags = ['tools']
|
17 |
| -handler.command = /^(ocr|totext)$/i |
| 53 | +handler.command = /^(ocr|totext|keteks|ketext|ketulisan)$/i |
18 | 54 |
|
19 | 55 | export default handler
|
0 commit comments