Faits:
Faits:
A. Le 12 juillet 1998, le Juge d'instruction du canton de Vaud a inculpé H._ d'escroquerie et d'infraction à la LSEE. Il a ordonné son placement immédiat en détention préventive.
Le 6 août 1998, le Juge d'instruction a rejeté la demande de libération
provisoire présentée par H._. Par arrêt du 27 août 1998, le Tribunal d'accusation du Tribunal cantonal du canton de Vaud a admis le recours formé contre cette décision, qu'il a jugé disproportionnée. La prévenue a été libérée immédiatement.
Par jugement du 7 mars 2003, le Tribunal correctionnel de l'arrondissement de la Broye et du Nord vaudois a libéré H._ des chefs d'accusation de soustraction sans dessein d'enrichissement, d'abus de confiance, de dommages à la propriété, d'escroquerie et d'infraction à la LSEE (ch. I du dispositif). Il l'a reconnue coupable d'appropriation illégitime et la condamnée de ce fait à une amende de 200 fr. (ch. II du dispositif). Le Tribunal correctionnel a homologué pour valoir jugement les reconnaissances de dette souscrites en faveur de certains plaignants par l'accusée (ch. III à IX du dispositif), à la charge de laquelle il a mis les frais de la cause (ch. X du dispositif).
Le 16 juin 2003, la Cour de cassation pénale du Tribunal cantonal du canton de Vaud a admis partiellement le recours contre ce jugement, dont elle a réformé le ch. X du dispositif en ce sens que les frais ne devaient être mis à la charge de H._ que dans la proportion des deux tiers.
Le 27 juin 2003, H._ a formé une demande d'indemnisation pour son incarcération. Elle a conclu à ce que l'Etat de Vaud lui verse le montant de 20'700 fr., requête que le Tribunal d'accusation du Tribunal cantonal a rejetée, le 18 mars 2004.
Le 27 juin 2003, H._ a formé une demande d'indemnisation pour son incarcération. Elle a conclu à ce que l'Etat de Vaud lui verse le montant de 20'700 fr., requête que le Tribunal d'accusation du Tribunal cantonal a rejetée, le 18 mars 2004.
B. Agissant par la voie du recours de droit public, H._ demande au Tribunal fédéral d'annuler l'arrêt du 18 mars 2004 et de renvoyer la cause au Tribunal d'accusation pour nouvelle décision au sens des considérants. Elle invoque l'art. 9 Cst. qui prohibe l'arbitraire. Elle requiert l'assistance judiciaire.
Le Tribunal d'accusation et le Ministère public se réfèrent à l'arrêt attaqué.

Le Tribunal fédéral considère en droit:
1. Hormis des exceptions non réalisées en l'espèce, le recours de droit public n'a qu'un effet cassatoire (art. 90 al. 1 let. b OJ; <ref-ruling> consid. 1.2.1 p. 131/132, 173 consid. 1.5 p. 176, et les arrêts cités). La conclusion du recours tendant au renvoi de la cause au Tribunal d'accusation pour nouvelle décision au sens des considérants est partant irrecevable.
1. Hormis des exceptions non réalisées en l'espèce, le recours de droit public n'a qu'un effet cassatoire (art. 90 al. 1 let. b OJ; <ref-ruling> consid. 1.2.1 p. 131/132, 173 consid. 1.5 p. 176, et les arrêts cités). La conclusion du recours tendant au renvoi de la cause au Tribunal d'accusation pour nouvelle décision au sens des considérants est partant irrecevable.
2. La recourante se plaint d'une application arbitraire de l'<ref-law>/VD. A teneur de cette norme, celui qui a été détenu et a bénéficié par la suite d'un non-lieu ou d'un acquittement, peut obtenir de l'Etat une indemnité à raison du préjudice que lui a causé son incarcération. Selon la jurisprudence cantonale rappelée dans l'arrêt attaqué, cette disposition doit être interprétée dans le même sens que l'<ref-law>/VD, octroyant au prévenu libéré le droit à une indemnité à raison de la poursuite pénale qu'il n'a ni provoquée ni compliquée fautivement. L'indemnité peut cependant être refusée, en tout ou partie, si le prévenu a clairement violé une norme de comportement, écrite ou non écrite, résultant de l'ordre juridique suisse pris dans son ensemble - dans le sens d'une application par analogie des principes qui découlent de l'<ref-law> - et qu'il a ainsi occasionné la procédure pénale ou qu'il en ait entravé le cours; le comportement fautif doit être déterminant et se trouver en relation de causalité avec les frais imputés (<ref-ruling> consid. 1b p. 334; <ref-ruling>). Le juge doit se référer aux principes généraux de la responsabilité délictuelle (ATF <ref-ruling> consid. 2c p. 168) et fonder son prononcé sur des faits incontestés ou déjà clairement établis (<ref-ruling> consid. 2a in fine p. 374).
2. La recourante se plaint d'une application arbitraire de l'<ref-law>/VD. A teneur de cette norme, celui qui a été détenu et a bénéficié par la suite d'un non-lieu ou d'un acquittement, peut obtenir de l'Etat une indemnité à raison du préjudice que lui a causé son incarcération. Selon la jurisprudence cantonale rappelée dans l'arrêt attaqué, cette disposition doit être interprétée dans le même sens que l'<ref-law>/VD, octroyant au prévenu libéré le droit à une indemnité à raison de la poursuite pénale qu'il n'a ni provoquée ni compliquée fautivement. L'indemnité peut cependant être refusée, en tout ou partie, si le prévenu a clairement violé une norme de comportement, écrite ou non écrite, résultant de l'ordre juridique suisse pris dans son ensemble - dans le sens d'une application par analogie des principes qui découlent de l'<ref-law> - et qu'il a ainsi occasionné la procédure pénale ou qu'il en ait entravé le cours; le comportement fautif doit être déterminant et se trouver en relation de causalité avec les frais imputés (<ref-ruling> consid. 1b p. 334; <ref-ruling>). Le juge doit se référer aux principes généraux de la responsabilité délictuelle (ATF <ref-ruling> consid. 2c p. 168) et fonder son prononcé sur des faits incontestés ou déjà clairement établis (<ref-ruling> consid. 2a in fine p. 374).
3. Le Tribunal d'accusation a considéré que malgré la libération de la recourante de tous les chefs d'accusation portés contre elle (sous la seule réserve, mineure au demeurant, de l'appropriation illégitime), celle-ci n'avait droit à aucune indemnité au sens de l'<ref-law>/VD, car elle avait contracté de nombreuses dettes sans les rembourser, comportement critiquable sur le plan civil. La recourante rétorque à cela que les comportements fautifs sur lesquels se fonde le Tribunal d'accusation seraient sans rapport avec sa détention.
Le 12 juillet 1998, le Juge d'instruction a inculpé la recourante et ordonné sa détention à raison des plaintes déposées par A._, B._ et la société C._, ainsi que par D._. A._, B._ et C._ avaient fait des clichés de mode pour la recourante, qui ne les avait jamais payés. De même, D._ avait dû supporter les factures de raccordements téléphoniques utilisés par la recourante. Les montants en jeu, et pour lesquels la recourante a reconnu sa dette, sont sans doute relativement modestes (de l'ordre de 7000 fr. au total). En tant que tels, ils ne justifiaient sans doute pas une détention qui a duré quarante-huit jours.
Cela étant, il ne faut pas perdre de vue que le 30 juillet 1998, la poursuite a été étendue à la plainte déposée notamment par Jacques E._, dont la recourante s'est reconnue la débitrice pour un montant de 25'000 fr. (ch. III du dispositif du jugement du 7 mars 2003). Quoi qu'en dise la recourante, cet élément pouvait être pris en compte pour le maintien de sa détention.
Si la recourante a été libérée de la prévention d'escroquerie, elle a néanmoins reconnu devoir aux plaignants des sommes d'un montant total d'environ 40'000 fr., à raison de l'inexécution d'obligations contractuelles qui lui incombaient. C'est à la suite de ce comportement contraire au droit civil que les plaintes pour escroquerie ont été déposées, ce qui a conduit à l'incarcération de la recourante. Sur le vu de ces faits et eu égard à la jurisprudence qui vient d'être rappelée, le Tribunal d'accusation pouvait sans arbitraire lui refuser toute indemnité au sens de l'<ref-law>/VD.
Si la recourante a été libérée de la prévention d'escroquerie, elle a néanmoins reconnu devoir aux plaignants des sommes d'un montant total d'environ 40'000 fr., à raison de l'inexécution d'obligations contractuelles qui lui incombaient. C'est à la suite de ce comportement contraire au droit civil que les plaintes pour escroquerie ont été déposées, ce qui a conduit à l'incarcération de la recourante. Sur le vu de ces faits et eu égard à la jurisprudence qui vient d'être rappelée, le Tribunal d'accusation pouvait sans arbitraire lui refuser toute indemnité au sens de l'<ref-law>/VD.
4. Le recours doit partant être rejeté. La recourante demande l'assistance judiciaire, laquelle est accordée à la double condition que le demandeur soit indigent et que ses conclusions ne paraissent pas vouées à l'échec (art. 152 OJ). Si la première condition semble remplie, tel n'est pas le cas de la deuxième, car le sort du recours était scellé d'emblée. Les frais sont partant mis à la charge de la recourante (art. 156 OJ). Il n'y a pas lieu d'allouer des dépens (art. 159 OJ).

Par ces motifs, le Tribunal fédéral prononce:
Par ces motifs, le Tribunal fédéral prononce:
1. Le recours est rejeté dans la mesure de sa recevabilité.
1. Le recours est rejeté dans la mesure de sa recevabilité.
2. La demande d'assistance judiciaire est rejetée.
2. La demande d'assistance judiciaire est rejetée.
3. Un émolument de 2000 fr. est mis à la charge de la recourante.
3. Un émolument de 2000 fr. est mis à la charge de la recourante.
4. Le présent arrêt est communiqué en copie à la mandataire de la recourante, ainsi qu'au Juge d'instruction, au Procureur général et au Tribunal d'accusation du Tribunal cantonal du canton de Vaud.
Lausanne, le 21 décembre 2004
Au nom de la Ire Cour de droit public
du Tribunal fédéral suisse
Le président: Le greffier: