Faits: Faits: A. F._, née en 1965, mariée et mère de trois enfants, a travaillé en qualité de blanchisseuse à raison de 60 % d'un horaire de travail habituel, soit cinq heures trente par jour, cinq jours par semaine. Simultanément, elle exerçait une activité accessoire en qualité de nettoyeuse à raison de deux heures par jour, cinq jours par semaine. Consulté le 17 juillet 1997 par l'assurée qui se plaignait de douleurs au poignet droit, le docteur P._, chef de clinique adjoint à l'unité de chirurgie de la main de l'Hôpital X._, a posé le diagnostic d'ostéonécrose aseptique du semi-lunaire droit (maladie de Kienböck) au stade III B (rapport du 18 juillet 1997). Le 25 novembre 1997, ce médecin a procédé à une intervention consistant en une dénervation du carpe, associée à une styloïdectomie radiale. Il a fait état d'une incapacité de travail entière depuis le 25 novembre 1997. Le 13 juillet 1998, l'assurée a présenté une demande tendant à l'octroi d'une rente de l'assurance-invalidité. Après avoir recueilli divers avis médicaux, l'Office cantonal de l'assurance-invalidité du canton de Genève a mis en oeuvre un stage d'observation professionnelle qui a eu lieu du 8 octobre au 2 décembre 2001 au Centre d'intégration professionnelle, à Genève (CIP), fonctionnant comme Centre d'observation professionnelle de l'assurance-invalidité (COPAI). Par décision du 4 mars 2002, l'office AI a nié le droit de l'assurée à une rente d'invalidité, motif pris que le taux d'invalidité constaté (10 %) était insuffisant pour ouvrir droit à une telle prestation. Par décision du 4 mars 2002, l'office AI a nié le droit de l'assurée à une rente d'invalidité, motif pris que le taux d'invalidité constaté (10 %) était insuffisant pour ouvrir droit à une telle prestation. B. Saisi d'un recours contre cette décision, le Tribunal cantonal des assurances sociales du canton de Genève l'a rejeté par jugement du 30 mars 2004. B. Saisi d'un recours contre cette décision, le Tribunal cantonal des assurances sociales du canton de Genève l'a rejeté par jugement du 30 mars 2004. C. F._ interjette recours de droit administratif contre ce jugement, dont elle demande l'annulation, en concluant implicitement à l'octroi d'une demi-rente. L'Office AI conclut au rejet du recours. De son côté, l'Office fédéral des assurances sociales n'a pas présenté de déterminations.