PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → Integration « scanner de documents » avec appareil photo
Integration « scanner de documents » avec appareil photo
Débuté par Franck MATIGNON, 01 aoû. 2018 13:29 - 15 réponses
Membre enregistré
23 messages
Posté le 01 août 2018 - 13:29
Bonjour,

Je développe actuellement une application dans laquelle des commerciaux vont devoir joindre des documents à leurs commandes (divers justificatifs). Je prévois l’utilisation de la caméra pour joindre de simples photos des documents mais cela risque fort d’etre mal cadré ou illisible si l’utilisateur ne fait pas attention.

Je cherche donc une solution qui permettrait d’utiliser une application tierce pour « scanner » les documents avec laquelle je veux communiquer (demander l’ouverture pour effectuer un scan, récupérer le fichier)

Pour le moment je n’ai rien trouvé à part des solutions de SDK payantes et assez chères (l’application sera utilisée par un seul client avec une dizaine de commerciaux)

Merci de vos pistes et bons devs

--
Cordialement,

Franck MATIGNON
Posté le 01 août 2018 - 17:07
Je vous déconseille l'utilisation de la caméra , les documents sont souvent illisibles.
Il existe des scanners portables avec liaison sans fil qui donne de bien meilleurs résultats.
Membre enregistré
12 messages
Posté le 01 août 2018 - 17:55
En effet la qualité peut être moindre cependant c'est la méthode que veut utiliser mon client.

Avec un bon appareil photo et une application de traitement la qualité n'est pas trop mal.

Je suis tombé sur l'application CamScanner qui possede des API mais je bute maintenant sur l'appel de l'application par une procédure JAVA :

https://dev.camscanner.com/developers/wiki…

Je n'arrive pas a créer une procédure globale JAVA avec le code qu'ils donnent :

Intent intent = new Intent("com.intsig.camscanner.ACTION_SCAN");
// Or content uri picked from gallery
Uri uri = Uri.fromFile(new File("/sdcard/source.jpg"));
intent.putExtra(Intent.EXTRA_STREAM, uri);
intent.putExtra("scanned_image", "/sdcard/scanned.jpg");
intent.putExtra("pdf_path", "/sdcard/processed.jpg");
intent.putExtra("org_image", "/sdcard/org.jpg");
startActivityForResult(intent, REQUEST_CODE);

- Je n'arrive pas a passer les chemin par parametres
- Je n'arrive pas non plus a compiler l'application avec juste ce code (erreur java lors de la compilation)
Membre enregistré
23 messages
Posté le 01 août 2018 - 18:07
Oups j’ai deux comptes pcsoft :)

--
Cordialement,

Franck MATIGNON
Posté le 01 août 2018 - 18:50
Phoenix a écrit :
En effet la qualité peut être moindre cependant c'est la méthode que veut utiliser mon client.

Avec un bon appareil photo et une application de traitement la qualité n'est pas trop mal.

Je suis tombé sur l'application CamScanner qui possede des API mais je bute maintenant sur l'appel de l'application par une procédure JAVA :

https://dev.camscanner.com/developers/wiki…

Je n'arrive pas a créer une procédure globale JAVA avec le code qu'ils donnent :

Intent intent = new Intent("com.intsig.camscanner.ACTION_SCAN");
// Or content uri picked from gallery
Uri uri = Uri.fromFile(new File("/sdcard/source.jpg"));
intent.putExtra(Intent.EXTRA_STREAM, uri);
intent.putExtra("scanned_image", "/sdcard/scanned.jpg");
intent.putExtra("pdf_path", "/sdcard/processed.jpg");
intent.putExtra("org_image", "/sdcard/org.jpg");
startActivityForResult(intent, REQUEST_CODE);

- Je n'arrive pas a passer les chemin par parametres
- Je n'arrive pas non plus a compiler l'application avec juste ce code (erreur java lors de la compilation)


ici tu n'appelle pas d'Api mais l'application elle même.
qu'a tu prévu pour la récupération du résultat ?
Posté le 02 août 2018 - 13:05
Bonjour
J'ai intégré des fonctions dans une application pour scanner des documents et les enregistrer en PDF
Il s'agit de notes de frais.
les fonctions permettent à l'utilisateur de scanner via les fonctions VidéoLanceAppli(viCaptureImage)
ensuite de modifier la taille du fichier photo
de vérifier la netteté
d'imprimer en PDF
et d'envoyer le document PDF

Tout ça sans application tierce.
Cordialement
Dominique
Membre enregistré
23 messages
Posté le 02 août 2018 - 13:31
Un code est fourni pour récupérer le résultat :

void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE) {
int responseCode = data.getIntExtra("RESULT_OK", -1);
if (requestCode == Activity.RESULT_OK) {
// Success
} else if (resultCode == Activity.RESULT_FIRST_USER) {
// Fail
} else if (resultCode == Activity.RESULT_CANCELED) {
// User canceled
}
}
}

Je crois que ce qu'il me manque dans mon code java c'est les import avant la procédure. Je ne m'y connais absolument pas en java

--
Cordialement,

Franck MATIGNON
Posté le 03 août 2018 - 00:28
Dominique a écrit :
Bonjour
J'ai intégré des fonctions dans une application pour scanner des documents et les enregistrer en PDF
Il s'agit de notes de frais.
les fonctions permettent à l'utilisateur de scanner via les fonctions VidéoLanceAppli(viCaptureImage)
ensuite de modifier la taille du fichier photo
de vérifier la netteté
d'imprimer en PDF
et d'envoyer le document PDF

Tout ça sans application tierce.
Cordialement
Dominique


Dis moi juste comment tu vérifie la netteté ?
Pour le reste je sais faire.
Posté le 03 août 2018 - 00:34
Franck MATIGNON a écrit :
Un code est fourni pour récupérer le résultat :

void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE) {
int responseCode = data.getIntExtra("RESULT_OK", -1);
if (requestCode == Activity.RESULT_OK) {
// Success
} else if (resultCode == Activity.RESULT_FIRST_USER) {
// Fail
} else if (resultCode == Activity.RESULT_CANCELED) {
// User canceled
}
}
}

Je crois que ce qu'il me manque dans mon code java c'est les import avant la procédure. Je ne m'y connais absolument pas en java

--
Cordialement,

Franck MATIGNON


pour les import il faut tatonė pas a pas en éliminant les erreurs 1 a 1
par exemple tu doit avoir des erreur sur l'intent car il faut l'import Android content intent
comme indiqué sur la page https://developer.android.com/reference/android/content/Intent
Posté le 03 août 2018 - 11:11
pour la création du java
petite vidéo :
Posté le 03 août 2018 - 12:19
Tu gardes en mémoire ta photo et tu zoom sur ton document PDF ou l'image
J'ai mis les 2 possibilités
En fonction du document scanné ( A4 ou ticket)
Toute les fonctions dessin sont disponibles
Tu peux recadrer, jouer sur les contrastes, la luminosité.
Ce que fait camscanner.
Membre enregistré
23 messages
Posté le 03 août 2018 - 21:50
Bonjour Dominique,

Merci pour tes pistes. As tu un exemple de code pour le redimensionnement de l’image et la suppression de la zone hors sélection ?

Je serais preneur :merci:

--
Cordialement,

Franck MATIGNON
Posté le 05 octobre 2019 - 10:29
Bonjour Franck, je dois améliorer l'acquisition de mes documents pris en photo exactement comme toi et j'aurai aimé savoir quelle solution finale as-tu choisis ?
En effet, mon application aujourd'hui prend des photos qu'elle transforme en un seul document PDF mode portrait mais j'ai ce problème de bord qui ne sont pas blanc (rognage) et je n'ai pas la possibilité d'éditer la photo après coup.
Merci de ton retour.
Membre enregistré
23 messages
Posté le 05 octobre 2019 - 21:05
Bonjour,

N’ayant pas trouvé de solutions fonctionelle je me suis contenté de stocker l’image.

--
Cordialement,

Franck MATIGNON
Posté le 15 mars 2021 - 12:22
En fait, la solution aurait pu être de prendre une photo avec VidéoLanceAppli en stockant cette photo dans la mémoire cache du téléphone, de l'afficher dans un champ image avec Zoom aux doigts.
Et cette image zommée qui doit être utilisée et stockée dans l'application
Membre enregistré
1 message
Posté le 16 mars 2021 - 09:12
Il existe des applications de scanner mobiles qui donneront de bien meilleurs résultats, je recommande d'utiliser CamScanner